如何将非www重定向到具有多个站点的www? (Nginx和Varnish)

时间:2015-03-22 00:53:45

标签: wordpress redirect nginx 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_name 中添加' www.site2.com ' ”。

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”(没有www)它正在加载“http://site1.com”的内容(url继续site2.com没有www )。访问“http://www.site2.com”会显示正确的内容。

我做错了什么?

我认为重定向不起作用,因为我尝试重定向到Google.com,但它没有重定向。它不断在“site2.com”中加载“site1.com”内容。

return 301 http://www.google.com

我在下面尝试了这段代码,但结果相同:

rewrite ^(.*) http://www.site2.com$1 permanent;

我的完整 Nginx配置http://codepad.org/TfPHS0jH

2 个答案:

答案 0 :(得分:0)

您的网站不是由Nginx提供服务,而是由Varnish提供。

当您导航到http://www.siteX.comhttp://siteX.com中的任何一个时,您将转到http://www.siteX.com:80http://siteX.com:80并根据您的解释,Varnish会侦听端口80,而不是Nginx

没有任何理由不必将两者结合在一起(尽管你可能已经在某些网站上阅读了这些内容),你应该摆脱一个或另一个并专注于你决定保留的那个。

答案 1 :(得分:0)