Nota: Veja a atualização abaixo!
Eu tenho uma configuração Nginx em relação a dois domínios, example1.org
e example2.org
ambos são tratados na mesma instância.
Meu problema é com example2.org
, quero http://www.example2.org
redirecionar para https://example2.org
, mas quando digito http://www.example2.org
no navegador, sempre acabo com um "Erro de privacidade - Não seguro" que lista o certificado de example1.org
.
O problema parece ser que a default server
parte "ganha" ao resolver http://www.example2.org
, o que AFAIK, não deveria acontecer, e parece não acontecer
Primeiro em default.conf
, example1.org
eu tenho:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
ssl_certificate /etc/letsencrypt/live/example1.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example1.org/privkey.pem; # managed by Certbot
ssl_session_tickets off;
return 302 http://$host$request_uri;
}
Então em example2.org.conf
eu tenho
server {
server_name www.example2.org;
return 301 https://example2.org$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example2.org;
root /opt/web-apps/example2.org/system/nginx-root; # Used for acme.sh SSL verification (https://acme.sh)
ssl_certificate /etc/letsencrypt/example2.org/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example2.org/example2.org.key;
include /etc/nginx/snippets/ssl-params.conf;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2371;
}
location ~ /.well-known {
allow all;
}
client_max_body_size 50m;
}
Alguma sugestão para o que estou perdendo / fazendo errado?
Felicidades!
Atualizar:
Os navegadores mantêm seu próprio cache HSTS, o que estraga tudo. Infelizmente, parece não haver como desabilitar este lado do servidor para um subdomínio específico, como "www"....
O problema é que
http://www.example2.com
não está sendo processado peloserver
bloco que você espera.Se você ativar o HTTP Strict Transport Security para um domínio e incluir a cláusula "subdomains", o navegador se lembrará disso por muito tempo.
O navegador altera automaticamente a
http
solicitação parahttps://www.example2.com
.Não há bloco de servidor que lide com esse nome de domínio na porta 443, portanto, ele é tratado pelo bloco de servidor padrão, que usa o certificado para
example1.com
.