Estou tentando configurar meu site com NGINX. Estou um pouco perdido e tentei todas as soluções relevantes que pude encontrar, então agradecemos sua paciência :)
Quero que todo o tráfego http seja redirecionado para https, e as conexões ao subdomínio www do meu site e ao endereço IP do meu servidor (123.123.123.123 para nossos propósitos) devem redirecionar para mywebsite.com. A configuração do meu servidor está abaixo e atende a todos esses critérios, exceto o redirecionamento www, que me dá uma página NGINX 404. O que não entendo é que o tratamento do endereço IP e do subdomínio www parece idêntico para mim - o problema está em outro lugar, como certificados DNS ou SSL? Obrigado.
/etc/nginx/sites-available/meuwebsite
server {
listen 80 ;
server_name www.mywebsite.com mywebsite.com 123.123.123.123 ;
return 301 https://mywebsite.com$request_uri ;
}
server {
server_name www.mywebsite.com ;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
return 301 https://mywebsite.com$request_uri ;
}
server {
server_name 123.123.123.123;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
return 301 https://mywebsite.com$request_uri ;
}
server {
server_name mywebsite.com ;
root /var/www/mywebsite ;
index index.html index.htm index.nginx-debian.html ;
location / {
try_files $uri $uri/ =404 ;
}
if ($host != mywebsite.com) {
return 301 https://mywebsite.com$request_uri;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
root@localhost:~# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: mail.mywebsite.com
Serial Number: ###################################
Key Type: ECDSA
Domains: mail.mywebsite.com
Expiry Date: 2023-12-09 16:27:55+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/mail.mywebsite.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/mail.mywebsite.com/privkey.pem
Certificate Name: mywebsite.com
Serial Number: ###################################
Key Type: ECDSA
Domains: mywebsite.com mail.mywebsite.com www.mywebsite.com
Expiry Date: 2023-12-09 03:09:48+00:00 (VALID: 88 days)
Certificate Path: /etc/letsencrypt/live/mywebsite.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/mywebsite.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Para DNS, tenho registros A e AAAA para mywebsite.com e *.mywebsite.com apontando para os endereços ipv4 e ipv6 do meu servidor, respectivamente, bem como um registro MX e alguns registros TXT para meu subdomínio de e-mail.
A mywebsite.com 123.123.123.123 600
A *.mywebsite.com 123.123.123.123 600
AAAA mywebsite.com 1234:1234::1234:1234:1234:1234 600
AAAA *.mywebsite.com 1234:1234::1234:1234:1234:1234 600
MX mywebsite.com mail.mywebsite.com 600 10
TXT _dmarc.mywebsite.com v=DMARC1; p=reject; rua=mailto:[email protected]; fo=1 600
TXT mywebsite.com v=spf1 mx a:mail.mywebsite.com -all 600
TXT mail._domainkey.mywebsite.com v=DKIM1; h=sha256; k=rsa; p=##################################### 600
Responder1
(isto é principalmente um comentário, mas o espaço é limitado)
Quero que todo o tráfego http seja redirecionado para https,
OK, parece sensato.
e as conexões com o subdomínio www do meu site e com o endereço IP do meu servidor (123.123.123.123 para nossos propósitos) devem redirecionar para mywebsite.com
Por que? Não vejo nenhum benefício nisso e efetivamente fecha a porta para qualquer alta disponibilidade do serviço.
Sim, uma inspeção casual da configuração sugere que ela deve fazer o que você pensa. No entanto, por que você está usando blocos de servidor diferentes para descreverwww.meuwebsite.come 123.123.123.123 quando implementam o mesmo comportamento? (Na verdade, você poderia implementar o comportamento para 3 vhosts SSL em um único bloco de servidor). Da mesma forma, você não precisa do certificado separado para mail.mywebsite.com.
É improvável que um problema de certificado resulte em um erro 404.
O DNS parece ser a coisa óbvia a ser verificada/inversamente, você pode substituir explicitamente qualquer DNS existente e ver os cabeçalhos HTTP reais usando (por exemplo):
curl -I -k --resolve \*:443:123.123.123 https://www.example.com