如何将非 www 重定向到具有多个站点的 www? (Nginx 和清漆)
How to Redirect a non-www to www with Mutiple Sites? (Nginx and Varnish)
首先我想澄清一下,我搜索了很多关于这个问题,但我还没有找到解决方案。
我在同一个 Nginx(端口 8080)和 Varnish(端口 80)下配置了 2 个 Wordpress 站点。
这是我的实际设置:
map $http_host $blogid {
default 0;
www.site1.com 1;
www.site2.com 2;
}
server {
listen 8080;
server_name www.site1.com site1.com;
root /var/www/site1.com;
...
}
server {
listen 8080;
server_name www.site2.com site2.com;
root /var/www/site2.com;
...
}
我想做的是为 site2 配置从非 www 到 www 的重定向。示例:http://site2.com -> http://www.site2.com
我添加了另一个带有重定向的'server'配置,只让'www.site2.com'在其他 'server_name'.
map $http_host $blogid {
default 0;
www.site1.com 1;
www.site2.com 2;
}
server {
server_name www.site1.com site1.com;
root /var/www/site1.com;
...
}
server {
listen 8080;
server_name site2.com;
return 301 http://www.site2.com$request_uri;
}
server {
server_name www.site2.com;
root /var/www/site2.com;
...
}
修改上面的配置并重启Nginx后,访问“http://site2.com" (without www) it is loading the content from "http://site1.com" (url continues site2.com without www). Acessing "http://www.site2.com”显示正确的内容。
我做错了什么?
我认为重定向不起作用,因为我试图重定向到 Google.com,但它没有重定向。它一直在 "site2.com".
中加载 "site1.com" 内容
return 301 http://www.google.com
我在下面尝试了这段代码,但结果相同:
rewrite ^(.*) http://www.site2.com permanent;
我的完整 Nginx 配置:
http://codepad.org/TfPHS0jH
您的网站不是由 Nginx 提供服务,而是由 Varnish 提供服务。
当您导航到 http://www.siteX.com or http://siteX.com, you are going to http://www.siteX.com:80 or http://siteX.com:80 中的任何一个时,根据您的解释,Varnish 会侦听端口 80,而不是 Nginx。
没有真正的理由必须将两者一起使用(尽管您可能已经在某些网站上阅读过),您应该摆脱其中一个或另一个,并专注于您决定保留的那个。
经过很长时间,这是我的解决方案:
http://www.softprayog.in/troubleshooting/how-to-redirect-non-www-urls-to-www-in-varnish
首先我想澄清一下,我搜索了很多关于这个问题,但我还没有找到解决方案。
我在同一个 Nginx(端口 8080)和 Varnish(端口 80)下配置了 2 个 Wordpress 站点。
这是我的实际设置:
map $http_host $blogid {
default 0;
www.site1.com 1;
www.site2.com 2;
}
server {
listen 8080;
server_name www.site1.com site1.com;
root /var/www/site1.com;
...
}
server {
listen 8080;
server_name www.site2.com site2.com;
root /var/www/site2.com;
...
}
我想做的是为 site2 配置从非 www 到 www 的重定向。示例:http://site2.com -> http://www.site2.com
我添加了另一个带有重定向的'server'配置,只让'www.site2.com'在其他 'server_name'.
map $http_host $blogid {
default 0;
www.site1.com 1;
www.site2.com 2;
}
server {
server_name www.site1.com site1.com;
root /var/www/site1.com;
...
}
server {
listen 8080;
server_name site2.com;
return 301 http://www.site2.com$request_uri;
}
server {
server_name www.site2.com;
root /var/www/site2.com;
...
}
修改上面的配置并重启Nginx后,访问“http://site2.com" (without www) it is loading the content from "http://site1.com" (url continues site2.com without www). Acessing "http://www.site2.com”显示正确的内容。
我做错了什么?
我认为重定向不起作用,因为我试图重定向到 Google.com,但它没有重定向。它一直在 "site2.com".
中加载 "site1.com" 内容return 301 http://www.google.com
我在下面尝试了这段代码,但结果相同:
rewrite ^(.*) http://www.site2.com permanent;
我的完整 Nginx 配置: http://codepad.org/TfPHS0jH
您的网站不是由 Nginx 提供服务,而是由 Varnish 提供服务。
当您导航到 http://www.siteX.com or http://siteX.com, you are going to http://www.siteX.com:80 or http://siteX.com:80 中的任何一个时,根据您的解释,Varnish 会侦听端口 80,而不是 Nginx。
没有真正的理由必须将两者一起使用(尽管您可能已经在某些网站上阅读过),您应该摆脱其中一个或另一个,并专注于您决定保留的那个。
经过很长时间,这是我的解决方案:
http://www.softprayog.in/troubleshooting/how-to-redirect-non-www-urls-to-www-in-varnish