假设服务器域名为vaakian.com,访问urihttp://vaakian.com/api/user,对比以下反向代理的效果。

1. 结尾都不打斜杠/

location /api {
    proxy_pass http://127.0.0.1:8080
}

反代结果

http://127.0.0.1:8080/api/user

2. location 打斜杠,proxy_pass 不打

location /api/ {
    proxy_pass http://127.0.0.1:8080
}

反代结果

http://127.0.0.1:8080/api/user

所以,如果 proxy_pass 不打斜杠,那么实际访问的路由部分是原封不动的拼接的。

2. location 不打,proxy_pass 打斜杠

location /api {
    proxy_pass http://127.0.0.1:8080/
}

反代结果,

http://127.0.0.1:8080//user

2. location 和 proxy_pass 都打斜杠

location /api/ {
    proxy_pass http://127.0.0.1:8080/
}

反代结果,

http://127.0.0.1:8080/user

所以,proxy_pass 打斜杠时实际匹配到的 location 会被清楚掉。