Запретить доступ по https для некоторых незащищенных доменов на nginx

Запретить доступ по https для некоторых незащищенных доменов на nginx

У меня есть веб-сервер nginx с виртуальными хостами на одном IP-адресе. Некоторые домены работают с http: ex1.com, ex2.com, ex3.com, и один домен с https: se1.com.

Когда я пытаюсь использовать httpS на ex1.com, ex2 или ex3, я получаю содержимое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), заключается в добавлении серверных блоков для каждого из ваших не-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;
}

Связанный контент