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