1.location的作用
location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。
2.location的语法
location的语法是:
location [ = | ~ | ~* | ^~ ] uri { .... } # | 指令 | | 匹配标识 | |匹配的网站网址| |匹配URI之后要执行的配置段|
其中"="的优先级为最高,为精确匹配;特殊字符"~"和"~*"的区别在于前者区分大小写,后者不区分大小写,他们还可以用逻辑操作符"!"来取反匹配;"^~"的意思是匹配之后不做正则表达式的检查,就是不用匹配类似于".(gif|jpg|jpeg)$"的正则表达式了,也就是说"^~"后面跟了正则表达式也没有用的。
location的匹配示例:
location = / { [ configuration A ] } #用户请求"/"时,匹配A,例如:www.pcm.com/location / { [ configuration B ] } #当用户请求"/index.html"时,匹配B,例如:www.pcm.com/index.htmllocation /documents/ { [ configuration C ] } #当用户请求"/documents/"时,匹配C,例如:www.pcm.com/documents/index.html location ^~ /images/ { [ configuration D ] } #当用户请求"/images/"时,匹配D,:www.pcm.com/images/1.jpg location ~* .(gif|jpg|jpeg)
3.location实验验证
我们在bbs的主机上做验证,配置文件如下:
server { listen 80; server_name bbs.pcm.com; root html/bbs; location = / { return 401; } location / { return 402; } location /documents/ { return 403; } location ^~/images/ { return 404; } location ~* .(gif|jpg|jpeg)$ { return 405; } }
检查语法,没问题的话重新加载配置文件,平滑重启nginx
实验的结果如下:
从上图可以验证到结果没问题的。其中location配对的方法是每条规则都去匹配,直到匹配到最为匹配的结果才输出;还有就是"/"这个是默认匹配的,如果都匹配不上的时候,最后就会默认匹配"/",所以输出的结果为402.