我似乎无法将我的重定向https://www
到https://
目前该网站认为www
. 是一个完全独立的网站。我想正确重定向,但当我添加我认为正确的配置时,我得到了无限重定向。非 https www 重定向正确。唯一的问题是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。
答案1
对于简单的 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 指令,我们可以完全避免评估正则表达式。
答案2
我假设您的 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;
}