
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;
}