首先,我们应该仔细并完整地阅读proxy_pass上的文档。
根据是否将“ proxy_pass”指令与URI一起使用来确定传递给上游服务器的URI。proxy_pass指令中的尾部斜杠表示URI存在且等于/
。尾部没有斜杠表示没有帽子URI。
具有URI的Proxy_pass:
location /some_dir/ {
proxy_pass http://some_server/;
}
有了以上内容,就有以下代理:
http:// your_server/some_dir/ some_subdir/some_file ->
http:// some_server/ some_subdir/some_file
基本上,/some_dir/
被替换/
为将请求路径从更改/some_dir/some_subdir/some_file
为/some_subdir/some_file
。
不带URI的Proxy_pass:
location /some_dir/ {
proxy_pass http://some_server;
}
第二个(不带斜杠):代理如下:
http:// your_server /some_dir/some_subdir/some_file ->
http:// some_server /some_dir/some_subdir/some_file
基本上,完整的原始请求路径无需更改就可以传递。
因此,就您的情况而言,似乎您应该只添加斜杠以获取所需的内容。
警告
请注意,仅当您在proxy_pass中不使用变量时,自动重写才有效。如果使用变量,则应该重写自己:
location /some_dir/ {
rewrite /some_dir/(.*) /$1 break;
proxy_pass $upstream_server;
}
在其他情况下,重写将不起作用,这就是为什么必须阅读文档的原因。
编辑
再次阅读您的问题,似乎我可能想念您只想编辑html输出。
为此,您可以使用sub_filter指令。就像是 ...
location /admin/ {
proxy_pass http://localhost:8080/;
sub_filter "http://your_server/" "http://your_server/admin/";
sub_filter_once off;
}
基本上,您要替换的字符串和替换字符串