location指令
server{listen 80;server_name localhost;location / {}location /abc{}...}
location:用来设置请求的URI
uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。
属性介绍:
不带符号,要求必须以指定模式开始
server {listen 80;server_name 127.0.0.1;location /abc{default_type text/plain;return 200 "access success";}}以下访问都是正确的http://192.168.200.133/abchttp://192.168.200.133/abc?p1=TOMhttp://192.168.200.133/abc/http://192.168.200.133/abcdef
= : 用于不包含正则表达式的uri前,必须与指定的模式精确匹配
server {listen 80;server_name 127.0.0.1;location =/abc{default_type text/plain;return 200 "access success";}}可以匹配到http://192.168.200.133/abchttp://192.168.200.133/abc?p1=TOM匹配不到http://192.168.200.133/abc/http://192.168.200.133/abcdef
~ : 用于表示当前uri中包含了正则表达式,并且区分大小写~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写
换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识
server {listen 80;server_name 127.0.0.1;location ~^/abc\w${default_type text/plain;return 200 "access success";}}server {listen 80;server_name 127.0.0.1;location ~*^/abc\w${default_type text/plain;return 200 "access success";}}
^~: 用于不包含正则表达式的uri前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。
server {listen 80;server_name 127.0.0.1;location ^~/abc{default_type text/plain;return 200 "access success";}}