Я только что установил групповой сертификат Let's Encrypt и хочу использовать не www в качестве стандартного регулярного выражения для более короткого блока сервера. Поэтому я хочу сделать следующее:
http без www ---> https без www
http www ---> https без www
https www ---> https без www
http любой ---> https любой в определенную папку, например / var / www / any
- https любой ---> https любой в определенную папку, например / var / www / any
Я правильно это делаю? Слишком много перенаправлений? Я надеюсь, вы получите то, чего я хочу здесь.
Я нашел ответ уже после нескольких тестов ...
# case 1 & 2...
server {
listen 80;
listen [::]:80;
server_name <domain> www.<domain>;
return 301 https://<domain>$request_uri;
}
# case 3...
server {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
server_name www.<domain>;
...
return 301 https://<domain>$request_uri;
}
# the main server block...
server {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
...
}
Для случаев 4 и 5 мне сначала нужно добавить поддомен через запись CNAME в моем DNS и указать его на мой основной домен, а затем создать блок сервера с корневой папкой, соответствующей нужному server_name (поддомену).
server {
...
server_name <subdomain>.<domain>
root /var/www/any
...
}
Также стоит упомянуть (чтобы избежать парковки домена и домена, не связанного с IP) и вернуть «444 Connection Closed Without Response» ...
server {
listen 80 default_server;
listen [::]:80 default_server;
access_log off;
log_not_found off;
server_name _;
return 444;
}
Ссылка на то, что не следует использовать перенаправление регулярных выражений и избегать оператора if: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/