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

这两个后缀必须一样,否则会转发失败。

猜你喜欢

转载自www.cnblogs.com/wangcan/p/10922928.html