手记

Nginx的Location优先匹配规则-如果出现多个~正则匹配,如何优先匹配?

Nginx正则匹配的优先级:

正则表达式(~ ~*)的优先级最后,如果有多个location的正则能匹配的话,则优先匹配同一个server中,配置在前面的location。

我们来作个验证:

测试1:调节两个location的位置,修改配置如下:

Nginx配置如下,建立如下目录及文件:

server {

    listen       80;

    server_name  192.168.8.198;

    location ~ .*\.(txt|jpg|png)$ {

        root  /opt/www/1;

    }

    location ~ ^/download {

        root  /opt/www/2;

    }

}
mkdir /opt/www/1/download

mkdir /opt/www/2/download

echo "111111" > /opt/www/1/download/test.txt 
echo "222222" > /opt/www/2/download/test.txt 

验证:

浏览器: 访问这个地址(http://192.168.8.198/download/test.txt

展示如下:

测试2:调节两个location的位置,修改配置如下:

server {

    listen       80;

    server_name  192.168.8.198;

    location ~ ^/download {

        root  /opt/www/2;

    }

    location ~ .*\.(txt|jpg|png)$ {

        root  /opt/www/1;

    }

}

验证:

浏览器: 访问这个地址(http://192.168.8.198/download/test.txt

展示如下:

9人推荐
随时随地看视频
慕课网APP