Loops Nginx-在代理过程中添加变量时无限重载
我正在Docker上使用Nginx,我希望将每个用户分配到不同的端口 首先,在不添加任何内容的情况下,我的代码运行良好:Loops Nginx-在代理过程中添加变量时无限重载,loops,docker,nginx,static,reload,Loops,Docker,Nginx,Static,Reload,我正在Docker上使用Nginx,我希望将每个用户分配到不同的端口 首先,在不添加任何内容的情况下,我的代码运行良好: location /viewer/ { proxy_pass http://xx.xxx.xxx.xxx:18080/Road/; } 正如预期的那样,转到URL中的“/viewer/”将代理端口18080 但是如果我在代理过程中添加任何变量,比如: set $test 1; proxy_pass http://xx.xxx.xxx.xxx
location /viewer/ {
proxy_pass http://xx.xxx.xxx.xxx:18080/Road/;
}
正如预期的那样,转到URL中的“/viewer/”将代理端口18080
但是如果我在代理过程中添加任何变量,比如:
set $test 1;
proxy_pass http://xx.xxx.xxx.xxx:18080/Road/?$test;
然后,首先,静态文件不再加载,我必须添加如下行:
location ~ \.css {
add_header Content-Type text/css;
}
location ~ \.js {
add_header Content-Type application/x-javascript;
}
在此之后,静态文件再次工作,但页面开始无限重载
在我开始思考之前,这是因为我在proxy_pass中用一个变量替换了端口,但正如我向您展示的,当我在那里添加任何变量时,就会发生这种情况
你认为我会做错什么?
谢谢你的帮助 将变量添加到代理过程中会改变其行为。您将需要构造整个URI 在原始配置中,URI
/viewer/foo
在经过上游之前被转换为/Road/foo
在新配置中,URI/viewer/foo
被转换为/Road/?1
,原始URI的尾部丢失
使用rewrite…break
修改URI可能会更成功
例如:
location /viewer/ {
rewrite ^/viewer(.*)$ /road$1?something break;
proxy_pass http://xx.xxx.xxx.xxx:18080;
}
location /viewer/ {
rewrite ^/viewer(.*)$ /road$1 break;
proxy_pass http://xx.xxx.xxx.xxx:$myport;
}
有关详细信息,请参阅
根据您的评论,您希望更改目标端口 例如:
location /viewer/ {
rewrite ^/viewer(.*)$ /road$1?something break;
proxy_pass http://xx.xxx.xxx.xxx:18080;
}
location /viewer/ {
rewrite ^/viewer(.*)$ /road$1 break;
proxy_pass http://xx.xxx.xxx.xxx:$myport;
}
如果按IP地址指定上游服务器,则不需要
解析器
语句。但是,如果按名称指定上游,则需要定义一个解析器
。有关详细信息,请参阅 您使用主机头吗?再见。我以前看过这篇文章,但我没有在这个位置使用主机头你好,谢谢你的回答。这与我在上面使用的示例变量$test配合得很好。但是如果我想用一个变量替换端口,比如“$port”而不是“18080”,那么问题也是一样的。我仍然无法为每个用户代理一个端口。我认为proxy_pass仅仅通过添加一个变量来改变它的行为是非常奇怪的。。。