Привет, это, должно быть, основной вопрос, но я не видел ответа с соображениями Cerbot (если есть какие-то соображения). Как сделать так, чтобы https www перенаправляла на не-www вместо тайм-аута?
В https www время ожидания версии моего сайта истекает вместо перенаправления на не-www, тогда как все другие версии (http и https без www) работают нормально.
Желательно, чтобы я хотел получить доказательства в будущем, чтобы я мог обновлять сертификаты с помощью certbot и мне не нужно было вручную изменять конфигурацию nginx впоследствии.
Конфигурация сервера nginx показана ниже:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.mydomain.com mydomain.com;
listen 443 ssl; # managed by Certbot
ssl_certificate <path_to_cert> # managed by Certbot
ssl_certificate_key <path_to_key>; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam <path_to_this>
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Вы используете отдельные серверные блоки для каждого из четырех вариантов http / s и www / non-www. Вы никогда не используете операторы «если», если можете делать что-то по-другому - Nginx Если это зло.
# http server, static websites
server {
server_name example.com;
listen 443 ssl http2;
ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;
ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;
root /var/www/***rootdir;
}
# This server simply redirects the requested to the https version of the page
server {
listen 80;
server_name www.example.com example.com;
# Let's Encrypt certificates with Acmetool
location /.well-known/acme-challenge/ {
alias /var/www/.well-known/acme-challenge/;
}
location / {
return 301 https://example.com$request_uri;
}
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;
ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;
return 301 https://example.com$request_uri;
}