Nginx location的配置
网上看了很多nginx的location配置,写的感觉我看的都不是很明白。记录下自己的使用经验。
语法规则: location [=|~|~*|^~] /uri/ { … }
示例:
location /user/ { proxy_pass http://user.example.com; }
= ~这些我们称为location修饰符,他们定义了匹配模式
/user/ 这些我们称之为 匹配路径
## location修饰符
这个容易看的眼花缭乱,一个个捋清楚。
= 等于号即要求请求的地址和匹配路径完全相同
~ 波浪号表示匹配路径是正则表达式,加上*变成~*后表示大小写敏感
^~ 在~前面加上^就表示如果匹配到了就不匹配正则表达式的路径
## 重点规则
然后我们再确定一个原则,nginx做的是最长匹配,再规则中优先匹配长的。比如地址是 /user/api 会被匹配到/user/api的location而不会匹配到/user/的规则。
其次,先检查普通 匹配路径再检测 正则路径。
Let’s illustrate the above by an example:
location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }
The “/
” request will match configuration A, the “/index.html
” request will match configuration B, the “/documents/document.html
” request will match configuration C, the “/images/1.gif
” request will match configuration D, and the “/documents/1.jpg
” request will match configuration E.
如果是proxy_pass配置到iis的应用程序,在proxy_pass里最好不写路径只写网站级别
a.com/app 转发到原始的 192.168.1.2/app
这两个后缀必须一样,否则会转发失败。