1、简介
我们平常配置 Nginx 时,通常会被 location 和 proxy_pass 后面加不加 / 而迷惑,为此本文对此进行详细说明。
2、location 的 uri 配置
2.1、location 和 proxy_pass 后面加不加 /
1)、proxy_pass 端口后面没有 / ,则会将 location 及其后缀的内容完全拼接到 proxy_pass 所配置的地址后。
2)、proxy_pass 端口后面有 /,则仅会将 location 的后缀拼接到 proxy_pass 所配置的地址后。
示例:请求地址为:http://192.168.1.1:80/test/aa/bb
location 配置的前缀 | proxy_pass 配置 | 拼接后结果 | 备注 |
---|---|---|---|
/test/aa | proxy_pass 后加 / 例如: http://192.168.1.1:81/test/aa/ | http://192.168.1.1:81/test/aa//bb | 拼接的后缀为:/bb |
/test/aa | proxy_pass 后不加 / 例如: http://192.168.1.1:81 | http://192.168.1.1:81/test/aa/bb | 拼接的后缀为全部:/test/aa/bb |
/test/aa/ | proxy_pass 后加 / 例如: http://192.168.1.1:81/ | http://192.168.1.1:81/bb | 拼接的后缀为:bb |
/test/aa/ | proxy_pass 后添不加 / 例如: http://192.168.1.1:81 | http://192.168.1.1:81/test/aa/bb | 拼接的后缀为全部:/test/aa/bb |
如果请求地址为:http://192.168.1.123/test/aabb,location 为: /test/aa,后缀是:bb,proxy_pass 端口后面要加 /。
2.2、个人理解
我们通常发送的http请求,端口号之后的为 uri,这个 uri 和 location 后面的进行匹配,多余的部分在本文中称之为后缀。如果 proxy_pass 的端口后面没有/,就在 proxy_pass 后面拼接uri;如果 proxy_pass 的端口后面有/,就拼接这个后缀。
注意:我们看的是 proxy_pass 中端口后面有没有加/,而不是结尾加没加 /。
3、总结
本文详细介绍了 nginx 的 location 的配置规则,静态资源和代理配置加不加 / 的示例展示,掌握到此,可以基本实现 nginx 的开发使用要求。
本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)