location匹配命令:
~ #波浪线表示执行一个正则匹配,区分大小写
~* #表示执行一个正则匹配,不区分大小写
^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通字符精确匹配
location / {
# 匹配任何请求
}
location ^~ /images/{
# 匹配任何以 /images/ 开始的请求
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
}
location示例:
一、匹配以gif,jpg,jpeg,png结尾的请求,判断url是否符合以images开头,.png结尾的匹配规则
二、匹配来自/H5的请求
server {
listen 80; server_name h5.bestwayhealth.cn; location ~*\.(gif|jpg|jpeg|png)$ { if ( $request_uri ~ ^/images/.*.png$) { proxy_pass http://10.25.193.211:8082/H5/$request_uri; } } location ^~ /H5 { proxy_pass http://10.25.194.211:8082/HPay5/qrCode.html; client_max_body_size 1000m; } }
三、匹配以bestway/开头的请求,判断是否符合以bestway/patient/开头的匹配规则
四、$uri 指的是请求的路径,不包含”?”或者”#”之类的东西(www.cnblogs.com/wangyaobk)
$request_uri 则指的是请求的整个字符串(www.cnblogs.com/wangyaobk?id=1)
location ^~ /bestway/ {
if ($request_uri ~ ^/bestway/patient/.*$) { proxy_pass http://10.25.193.211:7777/$request_uri; } }