Nginx学习
location和proxy_pass路由规律总结
假设请求的url是:http://localhost/api/xxx
proxy_pass的路由规律:
- 转发的url为不带请求路径的后缀,例如:http://localhost:8080或者http://localhost:8080/
此时是否需要替换location中的path由proxy_pass来决定:
当后缀以“/”结尾时,将url中的location进行替换后的path拼接成proxy_pass + path
当无后缀时,则不替换
location /api/ {
proxy_pass http://localhost:8080;
}
# http://localhost/api/xxx -> http://localhost/api/xxx
location /api/ {
proxy_pass http://localhost:8080/;
}
# http://localhost/api/xxx -> http://localhost/xxx
location /api {
proxy_pass http://localhost:8080;
}
# http://localhost/api/xxx -> http://localhost/api/xxx
location /api4 {
proxy_pass http://localhost:8080/;
}
# http://localhost/api/xxx -> http://localhost//xxx
- 转发的url为带请求路径的后缀,例如:http://localhost:8080/yyy或者http://localhost:8080/yyy/;此时不区分情况,将url中的location进行替换后剩下的path直接拼接成proxy_pass + path;容易出现双斜杠或者字符连接的错误场景
location /api/ {
proxy_pass http://localhost:8080/yyy;
}
# http://localhost/api/xxx -> http://localhost:8080/yyyxxx
location /api/ {
proxy_pass http://localhost:8080/haha/;
}
# http://localhost/api/xxx -> http://localhost/yyy/xxx
location /api {
proxy_pass http://localhost:8080/yyy;
}
# http://localhost/api/xxx -> http://localhost/yyy/xxx
location /api {
proxy_pass http://localhost:8080/yyy/;
}
# http://localhost/api/xxx -> http://localhost:8080/yyy//xxx