给出以下 server 配置:

1
2
3
4
5
6
7
server {
listen 80;
server_name s.tilnel.com;
location /proxy {
proxy_pass http://127.0.0.1:8080;
}
}

请求 http://s.tilnel.com/proxy/xxx 时,会转发为 http://127.0.0.1:8080/proxy/xxx。这显然不是本意。

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name s.tilnel.com;
location /proxy/ {
proxy_pass http://127.0.0.1:8080/; # backslash is important here
}
location = /proxy {
return 302 /proxy/;
}
}

大功告成。

但有一点:比如 rslsync 这种毒瘤 Web 控制台自己就会重写 URL。那就别费劲整了。。。