Я не могу перенаправить свой https://www
к https://
Как сейчас сайт думает, что www
. это совершенно отдельный сайт. Я хочу правильно перенаправить, но когда я добавляю конфигурацию того, что считаю правильным, я получаю бесконечное перенаправление. Www без https перенаправляет правильно. Единственная проблема https://www
.
Вот моя конфигурация nginx, может, мне что-то не хватает. Я удалил https://www
перенаправить, потому что я не могу понять это правильно.
server {
listen 192.168.0.123:80;
server_name www.site.com site.com;
location /rss/main/ {
uwsgi_pass unix:///tmp/site.com.sock;
include uwsgi_params;
}
location / {
rewrite ^ https://site.com$request_uri permanent;
}
}
server {
listen 192.168.0.123:443 ssl;
server_name site.com;
access_log /var/log/nginx/site.com_access.log;
error_log /var/log/nginx/site.com_error.log;
ssl_certificate /srv/ssl/site_com.crt;
ssl_certificate_key /srv/ssl/site.com.key;
location / {
uwsgi_pass unix:///tmp/site.com.sock;
include uwsgi_params;
}
location /static/ {
alias /var/www/site.com/static_final/;
}
location /media/ {
alias /var/www/assets/site/;
}
}
Любая помощь приветствуется, так как я не хочу, чтобы люди случайно открыли www.
Я предполагаю, что ваш сертификат SSL охватывает как www.site.com, так и site.com. Следующее может показаться наиболее подходящим способом справиться с этим?
server {
listen 192.168.0.123:443 ssl;
server_name www.site.com;
ssl_certificate /srv/ssl/site_com.crt;
ssl_certificate_key /srv/ssl/site.com.key;
rewrite ^ https://site.com$request_uri permanent;
}
Для простого 301 редиректа мы могли бы использовать возвращение директива.
server {
listen 192.168.0.123:443 ssl;
server_name www.site.com;
ssl_certificate /srv/ssl/site_com.crt;
ssl_certificate_key /srv/ssl/site.com.key;
return 301 $scheme://site.com$request_uri;
}
Фактически это то же самое, что и ответ Алана, но с помощью директивы return мы можем полностью избежать вычисления регулярного выражения.