Denegar el acceso con https para algunos dominios no seguros en nginx

Denegar el acceso con https para algunos dominios no seguros en nginx

Tengo un servidor web nginx con hosts virtuales en una dirección IP. Algunos dominios funcionan con http: ex1.com, ex2.com, ex3.com y un dominio con https: se1.com.

Cuando intento usar httpS en ex1.com, ex2 o ex3, obtengo contenido dehttps://se1.comsitio. ¿Cómo puedo negarlo?

Configuración http del sitio predeterminado:

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

Configuración básica de http vhost:

server {
    listen   80;
    server_name ex1.com;

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

}

configuración del sitio 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;

}

Respuesta1

La solución de una pregunta casi idéntica y el principal resultado de Google (https://serverfault.com/a/382779/3256), es agregar bloques de servidor para cada uno de sus sitios que no son SSL y agregar una reescritura al sitio http, haciendo rebotar a cualquiera que termine en la dirección https a la dirección http. ¡Torpe pero efectivo!

Por ejemplo:

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

información relacionada