0

这是我的配置:

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

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

4

2 回答 2

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;
    }
}
于 2013-03-14T08:22:03.013 回答
0

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

proxy_set_header Host $host;

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

proxy_set_header Host your_upstream_server_name

届时将修复它。

于 2013-03-14T12:10:00.227 回答