我有2个使用Nginx重定向到不同端口的Meteor应用程序。对于每个应用程序,我有相同的配置文件,但不同的端口和域。第一个从www重定向到非www没有任何问题,但第二个显示消息:
此网页有重定向循环
在my-domain1.conf中:
server {
server_name www.saveting.com;
return 301 $scheme://saveting.com$request_uri;
}
server {
listen 80;
server_name saveting.com www.saveting.com;
access_log /var/log/nginx/app.dev.access.log;
error_log /var/log/nginx/app.dev.error.log;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header X-Forwarded-For $remote_addr;
}
}

在my-domain2.conf中:
server {
server_name www.downloadinstagramvideo.com;
return 301 $scheme://downloadinstagramvideo.com$request_uri;
}
server {
listen 80;
server_name downloadinstragramvideo.com www.downloadinstagramvideo.com;
access_log /var/log/nginx/app.dev.access.log;
error_log /var/log/nginx/app.dev.error.log;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header X-Forwarded-For $remote_addr;
}
}

我尝试使用this tutorial对所有域进行一次重定向,使用以下代码:
server {
server_name "~^(?!www\.).*" ;
return 301 $scheme://www.$host$request_uri;
}

但这根本不起作用。什么可以导致第二个重定向循环?
答案 0 :(得分:1)
第二个/第四个块中的server_name
包含第一个/第三个块的名称,这是错误的。每个服务器块应具有不重叠的名称。如:
server {
server_name www.saveting.com;
...
}
server {
server_name saveting.com;
...
}
server {
server_name www.downloadinstagramvideo.com;
...
}
server {
server_name downloadinstragramvideo.com;
...
}