nginx 同乙個IP上配置多個HTTPS主機

2021-07-29 09:52:33 字數 2198 閱讀 6808

最近公司網域名稱更變,同時,又要新舊網域名稱同時執行。 那麼,對於https的網域名稱在同乙個ip上如何同時存在多個虛擬主機呢?遂,檢視了下nginx手冊,有這麼一段內容,如下:

如果在同乙個ip上配置多個https主機,會出現乙個很普遍的問題:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

server

server

使用上面的配置,不論瀏覽器請求哪個主機,都只會收到預設主機www.example.com的證書。這是由ssl協議本身的行為引起的——先建立ssl連線,再傳送http請求,所以nginx建立ssl連線時不知道所請求主機的名字,因此,它只會返回預設主機的證書。 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

server

server

那麼,在同乙個ip上,如何配置多個https主機呢?

nginx支援tls協議的sni擴充套件(server name indication,簡單地說這個擴充套件使得在同乙個ip上可以以不同的證書serv不同的網域名稱)。不過,sni擴充套件還必須有客戶端的支援,另外本地的openssl必須支援它。

如果啟用了ssl支援,nginx便會自動識別openssl並啟用sni。是否啟用sni支援,是在編譯時由當時的 ssl.h 決定的(ssl_ctrl_set_tl***t_hostname),如果編譯時使用的openssl庫支援sni,則目標系統的openssl庫只要支援它就可以正常使用sni了。

nginx在預設情況下是tls sni support disabled。

啟用方法:

需要重新編譯nginx並啟用tls。步驟如下:

檢視是否啟用: 1

2

# /usr/local/nginx/sbin/nginx -v

tls

sni

support

enabled

這樣就可以在 同乙個ip上配置多個https主機了。

例項如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

server

server

這樣訪問每個虛擬主機都正常。

** 

nginx 同乙個IP上配置多個HTTPS主機

最近公司網域名稱更變,同時,又要新舊網域名稱同時執行。那麼,對於https的網域名稱在同乙個ip上如何同時存在多個虛擬主機呢?遂,檢視了下nginx手冊,有這麼一段內容,如下 如果在同乙個ip上配置多個https主機,會出現乙個很普遍的問題 server server server server 那...

Nginx 同乙個網域名稱配置多個專案

使用nginx要在同乙個網域名稱下配置多個專案有兩種方式 nginx按不同的目錄分發給不同的專案 啟用二級網域名稱,不同的專案分配不同的二級網域名稱 1.nginx按不同的目錄分發給不同的專案 server location project2 location 這裡配置了三個專案 路徑分發到http...

同乙個伺服器配置多個tomcat

6.修改啟動埠和關閉埠 進入d div tomcat7 8081 conf 目錄,開啟server.xml檔案,修改下面兩個地方 1 修改這個port 8006 原來預設的為 8005,使得它的關閉埠和另乙個關閉埠不發生衝突。2 修改port 8081 原來預設的為 8080 使得它的連線埠和另乙個...