nginx学习笔记(2):location块
1.基本语法
location [修饰符] <匹配模式> {
# 处理指令
}
2.修饰符匹配顺序
按照优先级从高到低排序:
=
表示精确匹配^~
表示uri以某个常规字符串开头,理解为匹配url路径即可(非正则)~
表示区分大小写的正则匹配~*
表示不区分大小写的正则匹配!~
和!~*
分别为区分大小写不匹配及不区分大小写不匹配的正则/
通用匹配,任何请求都会匹配到
优先级:
等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他location的匹配项
^~和通用匹配。使用前缀匹配,不支持正则表达式,如果有多个location匹配成功的话,不会终止匹配过程,会匹配表达式最长的那个(下方有例子)
如果上一步得到的最长的location为^~类型,则表示阻断正则表达式,不再匹配正则表达式
如果上一步得到的最长的location不是^~类型,继续匹配正则表达式,只要有一个正则成功,则使用这个正则的location,立即返回结果,并结束解析过程
3. root 和 alias 指定路径的区别。
#root(根目录)
location /abc {
root /var/www;
}
#处理方式: root路径+location路径
# http://192.168.80.20/abc/xy101/scj.html --> /var/www/abc/xy101/scj.html
#alias(别名目录、虚拟目录)
location /abc {
alias /var/www;
}
# 处理方式: alias路径替换location路径
# http://192.168.80.20/abc/xy101/scj.html --> /var/www/xy101/scj.html
4."/"
proxy_pass 中结尾有“/”,表示绝对路径,此时代理后的url:proxy_pass+原始url(去除匹配上的)
proxy_pass 中结尾没有“/”,表示相对路径,代理后的url:proxy_pass+原始url
1.举例:访问http://192.168.1.1/proxy/test.html
#第一种:
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
#代理到URL:http://127.0.0.1/test.html
#第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
#代理到URL:http://127.0.0.1/proxy/test.html
#第三种:
location /proxy/ {
proxy_pass http://127.0.0.1/aaa/;
}
#代理到URL:http://127.0.0.1/aaa/test.html
#第四种(相对于第三种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1/aaa;
}
#代理到URL:http://127.0.0.1/aaatest.html
作者:金星show
链接:https://www.jianshu.com/p/b010c9302cd0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
5.proxy_pass可在server块和location块中使用
1.在server中:
server段使用只需要提供域名或ip地址和端口。可以理解为端口转发,可以是tcp端口,也可以是udp端口。
2.在location中:
location中的if段,limit_except段中使用,处理需要提供域名或ip地址和端口外,还需要提供协议,如"http"或"https",还有一个可选的uri可以配置