Verweigern Sie den Zugriff mit https für einige ungesicherte Domänen auf Nginx

Verweigern Sie den Zugriff mit https für einige ungesicherte Domänen auf Nginx

Ich habe einen Nginx-Webserver mit virtuellen Hosts unter einer IP-Adresse. Einige Domänen funktionieren mit http: ex1.com, ex2.com, ex3.com und eine Domäne mit https: se1.com.

Wenn ich versuche, httpS auf ex1.com, ex2 oder ex3 zu verwenden, erhalte ich Inhalte vonhttps://se1.comWebsite. Wie kann ich es ablehnen?

Standard-Site-HTTP-Konfiguration:

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

Basis-HTTP-Vhost-Konfiguration:

server {
    listen   80;
    server_name ex1.com;

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

}

https-Site-Konfiguration:

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;

}

Antwort1

Die Lösung einer fast identischen Frage und das Top-Google-Ergebnis (https://serverfault.com/a/382779/3256), besteht darin, Serverblöcke für jede Ihrer Nicht-SSL-Sites hinzuzufügen und eine Umschreibung für die HTTP-Site vorzunehmen, wodurch jeder, der bei der HTTPS-Adresse landet, zur HTTP-Adresse umgeleitet wird. Umständlich, aber effektiv!

Zum Beispiel:

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

verwandte Informationen