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;

        ......

    }





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章