詳解nginx同一端口監聽多個域名和同時監聽http與https
1、同一端口監聽多個域名
如今公網ip資源越來越珍貴,多域名監聽應用非常廣泛,就是用一個端口,比如80或者443,監聽多個入口域名。如下:
server { listen 443 ssl; server_name xxx.xxx.cn; ssl_certificate ssl/server.pem; ssl_certificate_key ssl/server.key; ...... }
在啟用新的域名的時候,只需要另啟一個server配置文件,丟在vhosts目錄下即可,不會報端口被占,這個維護nginx的大部分人都知道。但是,這里有個地方要注意:不能跨nginx實例。很多同事習慣在同一虛機或者云主機下安裝多個nginx實例,如果你在實例1里面用了某個端口,再在實例2里面用這個端口綁不同域名,那對不起了,報錯妥妥的出來:
nginx: [emerg] bind() to 0.0.0.0:xxxx failed (98: Address already in use)nginx: [emerg] still could not bind()
個人建議:不在同一臺虛機或者云主機下安裝多個nginx實例,
2、http和https同時監聽
這種需求還是挺多的,有時候我們的證書需要安裝在A10或者F5這類硬負載均衡上,此時,DMZ區的服務器不需要安裝證書,只需要監聽http端口即可。但與此同時,內網dns直接將A地址指到了服務器,此時又需要在服務器上安裝證書。這種場景,就需要服務器同時對http和https端口進行監聽,監聽https口是為了解析內網https域名,監聽http口是為了反向代理從DMZ區過來的http請求。如此,可實現內外網https域名統一。
配置如下:
server { listen 8080; listen 443 ssl; server_name xxx.xxx.cn;; ssl_certificate ssl/server.pem; ssl_certificate_key ssl/server.key; ...... }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答