nginx에서는 server_name이 무시되는 것 같습니다.

nginx에서는 server_name이 무시되는 것 같습니다.

nginx.conf에 두 개의 도메인이 설정되어 있습니다. 둘 다 자체 인증서와 함께 SSL을 사용하고 Apache에 프록시를 사용합니다.

그러나 두 번째 도메인은 완전히 무시되며 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(또는 별도의 포트)가 필요합니다.

관련 정보