拒絕使用 https 存取 nginx 上的某些不安全網域

拒絕使用 https 存取 nginx 上的某些不安全網域

我有一個 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;
}

相關內容