【问题标题】:How to Redirect a non-www to www with Mutiple Sites? (Nginx and Varnish)如何将非 www 重定向到具有多个站点的 www? (Nginx 和清漆)
【发布时间】:2015-05-25 05:40:18
【问题描述】:

首先我想澄清一下,我搜索了很多关于这个问题,但我没有找到解决方案。

我在同一个 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”配置,并在另一个“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

【问题讨论】:

  • 为什么要添加地图代码?因为它在您的示例配置中没有做任何事情?您是否遗漏了示例代码中的某些内容?
  • 嗨@Dayo,我把那个配置留在那里,因为我不知道这是否会干扰。这是我完整的 NginX 配置:codepad.org/TfPHS0jH
  • 您提供的链接返回 500 服务器错误
  • 这里是:pastie.org/private/yzcqqt6thmt6jvxmmlvuhw(我在另一个服务器上粘贴,因为文件太大)

标签: wordpress redirect nginx varnish


【解决方案1】:

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

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

没有真正的理由必须同时使用这两者(尽管您可能在某些网站上阅读过),您应该摆脱其中一个或另一个并专注于您决定保留的那个。

【讨论】:

  • 正确,我的网站由 Varnish 提供服务。但是第一个请求发送到 Nginx,因为缓存中没有任何内容。那么,在这种情况下,问题在于两者都使用吗?有什么解决方法吗?
  • 第一个请求发送到 Varnish,因为它侦听默认端口 80。这就是 Nginx 中的重定向不起作用的原因。该请求根本不会到达 Nginx。总有一种解决方法,但为什么要实施不必要的复杂设置,然后开始解决它?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 2012-04-18
    • 1970-01-01
    • 2017-03-10
    • 2015-02-16
    • 2016-04-02
    • 2018-06-23
    • 2020-12-31
    相关资源
    最近更新 更多