nginx配置备忘

2018-05-17  本文已影响6人  menglj

1. location匹配

1.1. location类型

location主要分为普通匹配和正则匹配:

1 正则匹配的location形式如下:

location ~ /uri/ {...}  #区分大小写
location ~* /uri/ {...} # 不区分大小写

2 普通匹配的location形式如下:

location /uri/ {...}     #最大前缀匹配; 当严格匹配时,不再继续进行正则匹配
location = /uri/ {...}   #严格匹配,不再继续进行正则匹配
location ^~ /uri/ {...}  #最大前缀匹配,不再继续进行正则匹配

3 命名的location

error_page 404 = @named_location;
location @named_location {
  proxy_pass http://www.baidu.com;
}

1.2. location匹配原则

  1. 先匹配普通,再考虑匹配正则。
  2. 普通匹配时,如果严格匹配或使用了^~,则不再进行正则匹配,直接使用匹配上的普通location中的规则。
  3. 普通匹配的优先级为最大前缀匹配优先,与规则在文档中的顺序无关。
  4. 正则匹配的顺序与文档中的规则顺序有关,按照文档内容从上到下进行匹配,匹配上则停止下面的正则匹配。
  5. 如果正则匹配上,则使用正则location中的规则。
  6. 如果正则没有匹配上,则使用普通location里的规则。

2. proxy_pass相关

location /some/path/ {
    proxy_pass http://www.example.com/link/;
}

location /another/path/ {
    proxy_pass http://www.example.com;
}

上面的配置中,第一个规则中,被代理的服务后面指明了一个URI/link/,则转发时,会用这个URI替代location参数,例如:请求的URI为/some/path/page.html会被代理到http://www.example.com/link/page.html。如果没指定URI,如第二条规则,则会把请求URI直接转发给被代理的服务。

如果location为正则匹配,则代理服务后不可以跟着URI。

3. 参考文档

  1. 关于一些对location认识的误区
  2. Passing a Request to a Proxied Server
上一篇下一篇

猜你喜欢

热点阅读