1、location簡介html
一、 location做用nginx
location指令的做用是能夠根據用戶請求的URI來執行不一樣的應用,其實就是根據用戶請求的網站的地址URL匹配,匹配成功即進行相關操做正則表達式
2、vim
location使用的語法例子app
location{=|~|~*|^~}uri{curl
...網站
}url
locationspa |
{=|~|~*|^~}code |
uri |
{....} |
指令 |
匹配標識 |
匹配的網站網址 |
匹配URI後要執行的配置段 |
至關於if判斷,即
http://www.cnblog.com/pyrene/
location/pyrene/ {
do someting
}
若是匹配到pyrene就do someting
location/ / {
do someting
}
若是什麼都沒有匹配到,那麼就去找默認do something
~ :用於區分大小寫(大小寫敏感)的匹配 ~*:用於不區分大小寫的匹配 ~:做用是在常規字符串匹配檢查以後,不作正則表達式的檢查,即,若是最明確的那個字符串匹配location匹配中有此前綴,那麼不作正則表達式的檢查 ^~:做用是在常規的字符串匹配檢查以後,不作正則表達式的檢查 = :精確匹配
3、不用URI及特殊字符組合匹配的順序說明
不用RUI及特殊字符組合匹配順序 |
匹配說明 |
第一名「location = /{」 |
精確匹配/ |
第二名「location ^~/images/ {」 |
匹配常規字符串,不作正則匹配檢查 |
第三名 「location ~*\.(gif|jpg|jpeg)$ {」 |
正則匹配 |
第四名 「location /documents/{」 |
匹配常規字符串,若是有正則則優先匹配正則 |
第五名 「location / {」 |
全部location都能匹配後的默認匹配 |
4、配置
一、備份
[root@oldboy extra]# cp www.conf www.conf.pyrene.20170420.bak1
二、配置
[root@oldboy extra]# vim www.conf server { listen 80; server_name www.cnblogs.co pyrene; location / { return 401; } location = / { return 402; } location /documents/ { return 403; } location ^~ /images/ { return 404; } location ~* \.(gif|jpg|jpeg)$ { return 500; } }
三、重啓
[root@oldboy extra]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.8//conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.8//conf/nginx.conf test is successful [root@oldboy extra]# /application/nginx/sbin/nginx -s reload
四、操做
[root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co 402 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/index.html 401 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents 401 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/images/ 404 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents/documents.html 403 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/images/1.gif 404 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/ddd/1.gif 500 [root@oldboy extra]# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.cnblogs.co/documents/1.gif 500