语法规则
= #用于标准uri前,需要请求字串与uri完全匹配,如果匹配成功就停止向下匹配并立即处理请求。
~ #区分大小写
~* #不区分大写
^ #匹配以什么开头
$ #匹配以什么结尾
\ #转义字符。可以转. * ?等
* #代表任意长度的任意字符
location =|~|~*|^~] /uri/ { … }
location = / { 表示精确匹配 = 优先级最高
location ^~ /images/ { 匹配常规字符串,不做正则匹配检查优先匹配
location ~* \.(gif|jpg|jpeg)$ { 正则匹配规则、不区分大小写
location /document/ 匹配常规字符串,如果有正则,优先匹配正则
location / { 所有location 都不能匹配的时候,默认匹配
~ 区分大小写匹配
~* 不区分大小写匹配
server配置文件:
server {
listen 80;
server_name www.linyaohong.com linyaohong.com;
access_log logs/www_access.log main;
location = / {
return 402;
}
location / {
return 401;
}
location /document/ {
return 403;
}
location ^~ /images/ {
return 404;
}
location ~* \.(gif|jpg|jpeg)$ {
return 500;
}
}
用户请求的url |
设置的状态码 |
说明 |
当为空或者/时候 |
location = / { |
= 的精确匹配优先级最好,无论放的顺序如何,它都将优先被匹配执行 |
/index.html或者任意不匹配其他location的字符串 |
location / { |
/为默认匹配,如果没有匹配上其他location,则最后匹配”默认匹配的部分” |
/document/document.html |
location /document/ { |
此部分为路径匹配,匹配路径/document/ 下面的/document/1.jpg 没有匹配此处的location |
/document/1.jpg |
location ~* \.(gif|jpg|jpeg)$ { |
此部分匹配了1.jpg,属于扩展名匹配,虽然有 /document/ 但是还是匹配了扩展名,正则优先匹配 |
/images/1.jpg |
location ^~ /images/ { |
此部分为路径匹配,但是前面加了特殊字符^~ 所以优先匹配路径,而没有匹配结尾的jpg |