nginx子域到目录,重定向太多,为什么?

时间:2013-03-14 06:54:25

标签: nginx subdomain

这是我的配置:

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;
}

}

和浏览器报告许多重定向。

2 个答案:

答案 0 :(得分:0)

如果你想说代理到localhost: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;
    }
}

答案 1 :(得分:0)

如果没有所有信息,很难猜出发生了什么。根据评论,我的猜测是你正在使用虚拟主机,以便上游站点也由相同的nginx提供服务。所以这一行是问题所在:

proxy_set_header Host $host;

nginx变量$ host指向当前的Host头(与server_name匹配)。因此,如果再次为上游设置相同的主机头,则nginx将在上面找到相同的位置块,因为nginx依赖于Host头来查找正确的服务器。因此重定向循环。

设置

proxy_set_header Host your_upstream_server_name

然后会修复它。