
我有一個 nginx Web 伺服器,其虛擬主機位於一個 IP 位址上。一些使用 http 的網域:ex1.com、ex2.com、ex3.com,以及一個使用 https 的網域: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
來自幾乎相同的問題和頂部谷歌結果的解決方案(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;
}