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;
......
}