2013-03-14 24 views
0

這是我的配置:nginx subdomian到目錄,重定向過多,爲什麼?

server { 
listen  80; 
server_name ~^(?<sb>.+)\.a\.b\.c\.com$; 
access_log /data/logs/nginx/tas.access.log main; 
location/{ 
    proxy_intercept_errors on; 
    proxy_pass http://b.c/a/$sb/; 
    proxy_set_header Host $host; 
    proxy_redirect off; 
} 

}

和瀏覽器的重定向報告。

+0

'proxy_pass http://b.c/a/$sb/;'指向哪裏。這似乎有點奇怪。 – Bart 2013-03-14 06:58:40

+0

你想通過這種方式獲得什麼? – Bart 2013-03-14 07:00:26

+0

它是一個上游,localhost:8082 – user2168454 2013-03-14 07:01:02

回答

0

如果像你說的,你要代理到本地主機:8082,你需要在proxy_pass線這樣說:

server { 
    listen 80; 
    server_name ~^(?<sb>.+)\.a\.b\.c\.com$; 
    access_log /data/logs/nginx/tas.access.log main; 
    location/{ 
     proxy_intercept_errors on; 
     proxy_pass http://localhost:8082/a/$sb/; 
     proxy_set_header Host $host; 
     proxy_redirect off; 
    } 
} 
0

沒有所有的信息,這是很難猜測發生了什麼事情。根據評論,我的猜測是您正在使用虛擬主機,以便上游網站也由相同的nginx提供服務。所以這一行是問題:

proxy_set_header Host $host; 

nginx變量$ host指向當前主機頭(與server_name匹配)。因此,如果您再次爲上游設置相同的主機頭,那麼nginx將在上面找到相同的位置塊,因爲nginx依賴於Host頭來找到合適的服務器。因此重定向循環。

proxy_set_header Host your_upstream_server_name 

將修復它,然後。