簡體   English   中英

如何通過多個站點將非www重定向到www? (Nginx和Varnish)

[英]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_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而不萬維網)。 訪問“ http://www.site2.com ”顯示正確的內容。

我做錯了什么?

我認為重定向無法正常工作,因為我嘗試重定向到Google.com,但沒有重定向。 它一直將“ site1.com”內容加載到“ site2.com”中。

return 301 http://www.google.com

我在下面嘗試了此代碼,但結果相同:

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

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

您的網站不是由Nginx服務,而是由Varnish服務。

當您導航到http://www.siteX.comhttp://siteX.com時 ,您將轉到http://www.siteX.com:80http://siteX.com:80,然后根據您的解釋,Varnish監聽端口80,而不是Nginx。

沒有真正的理由必須將兩者一起使用(盡管您可能在某些網站上已經讀過),並且您應該擺脫一個或另一個,而專注於自己決定保留的一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM