Negar acesso com https para alguns domínios não seguros no nginx

Negar acesso com https para alguns domínios não seguros no nginx

Tenho um servidor web nginx com hosts virtuais em um endereço IP. Alguns domínios que funcionam com http: ex1.com, ex2.com, ex3.com e um domínio com https: se1.com.

Quando tento usar httpS em ex1.com, ex2 ou ex3, recebo conteúdo dehttps://se1.comsite. Como posso negar isso?

Configuração http do site padrão:

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

Configuração http vhost básica:

server {
    listen   80;
    server_name ex1.com;

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

}

configuração do site 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;

}

Responder1

A solução de uma pergunta quase idêntica e o principal resultado do Google (https://serverfault.com/a/382779/3256), é adicionar blocos de servidor para cada um dos seus sites não SSL e adicionar uma reescrita ao site http, transferindo assim qualquer pessoa que acabe no endereço https para o endereço http. Desajeitado, mas eficaz!

Por exemplo:

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

informação relacionada