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

问题描述 投票:0回答:2

这是我的配置:

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

并且浏览器报告许多重定向。

nginx subdomain
2个回答
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指向当前的Host标头(与server_name匹配)。因此,如果您再次为上游设置相同的主机头,则nginx将在上方找到相同的位置块,因为nginx依赖于Host头来查找正确的服务器。因此重定向循环。

设置

proxy_set_header Host your_upstream_server_name

然后将修复它。

© www.soinside.com 2019 - 2024. All rights reserved.