nginx에서 하위 도메인에 대해 SSL을 구성하는 방법

nginx에서 하위 도메인에 대해 SSL을 구성하는 방법

현재 Nginx는 도메인(예: *.website.com)에 대한 와일드카드 SSL 인증서를 허용하도록 구성되어 있습니다.

값비싼 와일드카드 인증서를 구입하는 대신 최상위 도메인 website.com에 대한 단일 도메인 SSL 인증서를 구입했습니다.

이제 서비스가 실제로 SSL 하에 있어야 하는 두 개의 하위 도메인을 사용한다는 것을 알게 되었습니다.

예: a.website.com 및 b.website.com

질문.

a.website.com에 대한 단일 하위 도메인 SSL 인증서를 구입할 때 nginx가 이를 사용하도록 지정할 수 있도록 nginx 구성을 어떻게 변경합니까?

현재 Nginx 파일의 모습은 다음과 같습니다.

server {
        listen 80;
        server_name website.io www.website.io;
        return 301 https://website.io$request_uri;
}

server {
        listen 443 ssl;
        ssl on;
        server_name website.io www.website.io;
    client_max_body_size 5m;
        add_header X-UA-Compatible    "IE=Edge,chrome=1";

    access_log /var/log/nginx/website.io_access.log;
    error_log /var/log/nginx/website.io_error.log;  

        ssl_certificate /srv/ssl/website.io/ssl.crt;
        ssl_certificate_key /srv/ssl/website.io/ssl.key;

        error_page 500 502 503 504 /500.html;
        location /500.html {
                root  /srv/static/website/maintenance;
        }

        location / {
        #auth_basic            "Restricted";
                #auth_basic_user_file  /etc/nginx/htpasswd.conf;

                include uwsgi_params;
        uwsgi_connect_timeout 30;
        uwsgi_read_timeout 30;
                uwsgi_pass 127.0.0.4:3031;
        }
}

답변1

귀하의 구성은 다음과 같이 변할 것입니다. ( 명확성을 위해 질문 본문에 따라 a.website.com귀하 의 예에서 도메인을 도메인으로 변경했습니다 )b.website.com

server {
        listen 80;
        server_name a.website.com;
        return 301 https://a.website.com$request_uri;
        }   

server {
        listen 443 ssl;
        server_name a.website.com;
        client_max_body_size 5m;
        add_header X-UA-Compatible    "IE=Edge,chrome=1";

        access_log /var/log/nginx/a.website_access.log;
        error_log /var/log/nginx/a.website_error.log;  

        ssl_certificate /srv/ssl/a.website/ssl.crt;
        ssl_certificate_key /srv/ssl/a.website/ssl.key;

        error_page 500 502 503 504 /500.html;
        location /500.html {
                root  /srv/static/website/maintenance;
        }

        location / {
                #auth_basic            "Restricted";
                #auth_basic_user_file  /etc/nginx/htpasswd.conf;
                include uwsgi_params;
                uwsgi_connect_timeout 30;
                uwsgi_read_timeout 30;
                uwsgi_pass 127.0.0.4:3031;
        }
}

server {
        listen 80;
        server_name b.website.com;
        return 301 https://b.website.com$request_uri;
        }   

server {
        listen 443 ssl;
        server_name b.website.com;
        client_max_body_size 5m;
        add_header X-UA-Compatible    "IE=Edge,chrome=1";

        access_log /var/log/nginx/b.website.com_access.log;
        error_log /var/log/nginx/b.website.com_error.log;  

        ssl_certificate /srv/ssl/b.website.com/ssl.crt;
        ssl_certificate_key /srv/ssl/b.website.com/ssl.key;

        error_page 500 502 503 504 /500.html;
        location /500.html {
                root  /srv/static/website/maintenance;
        }

        location / {
                #auth_basic            "Restricted";
                #auth_basic_user_file  /etc/nginx/htpasswd.conf;
                include uwsgi_params;
                uwsgi_connect_timeout 30;
                uwsgi_read_timeout 30;
                uwsgi_pass 127.0.0.4:3031;
        }
}

필요한 만큼 많은 사이트에 대해 이를 반복할 수 있으며, 각 사이트에 대해 추가 서버 블록을 정의할 뿐입니다.

관련 정보