nginx 上の一部の安全でないドメインに対して https によるアクセスを拒否する

nginx 上の一部の安全でないドメインに対して https によるアクセスを拒否する

1 つの IP アドレスに仮想ホストを備えた nginx Web サーバーがあります。http: ex1.com、ex2.com、ex3.com で動作するドメインがいくつかあり、https: se1.com で動作するドメインが 1 つあります。

ex1.com、ex2、ex3でhttpSを使用しようとすると、次のようなコンテンツが表示されます。https://se1.comサイト。どうすれば拒否できますか?

デフォルトサイトの http 設定:

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

基本 http vhost 構成:

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) のもう 1 つの方法は、非 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;
}

関連情報