nginx에서 일부 보안되지 않은 도메인에 대해 https를 통한 액세스 거부

nginx에서 일부 보안되지 않은 도메인에 대해 https를 통한 액세스 거부

하나의 IP 주소에 가상 호스트가 있는 nginx 웹 서버가 있습니다. http를 사용하는 일부 도메인: ex1.com, ex2.com, ex3.com 및 https를 사용하는 도메인 1개: se1.com.

ex1.com, ex2 또는 ex3에서 httpS를 사용하려고 하면 다음 내용이 나타납니다.https://se1.com대지. 어떻게 거부할 수 있나요?

기본 사이트 http 구성:

server {
listen 80 default;
server_name localhost;
deny all;
}

기본 http 가상 호스트 구성:

server {
    listen   80;
    server_name ex1.com;

    root /var/www/ex1.com;
    index index.html;

}

https 사이트 구성:

server {
    listen  443;
    server_name se1.com;

    ssl                        on;
    ssl_protocols              SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
    ssl_certificate            /etc/nginx/ssl/se1.crt;
    ssl_certificate_key        /etc/nginx/ssl/se1.key;

    root /var/www/se1.com;
    index index.html;

}

답변1

거의 동일한 질문의 솔루션과 최고의 Google 결과(https://serverfault.com/a/382779/3256)은 SSL이 아닌 각 사이트에 대해 서버 블록을 추가하고 http 사이트에 다시 쓰기를 추가하여 https 주소에 있는 모든 사람을 http 주소로 반송하는 것입니다. 투박하지만 효과적이다!

예를 들어:

server {
    listen 443 ssl;
    server_name ex1.com;

    ssl                        on;
    ssl_protocols              SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
    ssl_certificate            /etc/nginx/ssl/se1.crt;
    ssl_certificate_key        /etc/nginx/ssl/se1.key;

    rewrite ^       http://$server_name$request_uri? permanent;
}

관련 정보