server_name は nginx では無視されるようです

server_name は nginx では無視されるようです

nginx.conf に 2 つのドメインが設定されています。どちらも独自の証明書を使用した SSL と Apache へのプロキシを使用しています。

ただし、2 番目のドメインは完全に無視され、nginx は常に最初のドメインに解決されます。各ケースで server_name を正しく設定していますが (私が確認した限り)、この構成の何が問題なのかわかりません。

http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    upstream site {
        # real IP addresses masked
        server xx.xxx.x.xxx;
        server xx.xxx.x.xxx;
    }


    server {
        # this domain always works
        listen       443;
        server_name  *.first-site.com;

        ssl                  on;
        ssl_certificate      /var/ssl/first-site.crt;
        ssl_certificate_key  /var/ssl/first-site.key;

        location / {
            access_log off;
            proxy_connect_timeout 15;
            proxy_next_upstream error;
            proxy_pass http://site;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Protocol https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;
        }

    }

    server {
        # this domain is ignored, always resolves to first-site.com
        listen       443;
        server_name  *.second-site.com;

        ssl                  on;
        ssl_certificate      /var/ssl/second-site.crt;
        ssl_certificate_key  /var/ssl/second-site.key;

        location / {
            access_log off;
            proxy_connect_timeout 15;
            proxy_next_upstream error;
            proxy_pass http://site;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Protocol https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;
        }

    }

}

答え1

IP とポート番号をリッスンするように、Listen ディレクティブを調整する必要があります。

Listen 1.2.3.4:443

現在、SSLには別々のIP(または別々のポート)が必要です。

関連情報