nginx静态文件服务与别名和子路径混淆



我想设置这样的路径:

location /board/1 {
alias /home/front/;
break;
}
location /board/2 {
alias /home/front/;
break;
}
location /board/{ANY_NUMBER 3..} {
alias /home/front/;
break;
}

所以我这样写:

location ^~ /board/ {
alias /home/front/;
break;
}

然后我转到/board/1

nginx访问/home/front/1

我想访问/home/front

当我这样设置时:

location /board/1 {
alias /home/front/;
break;
}

nginx成功接入/home/front

有人能解释一下发生了什么吗?

通过使用alias指令,nginx基本上将位置路径的一部分(在本例中为/board/1/board(替换为alias指令指定的路径(/home/front/(。因此,如果在位置路径中使用数字,它将被替换,但如果它不在位置路径上,它将保留。

您可能想使用正则表达式位置:

location ~* ^/board/[0-9]+/ {
alias /home/front/;
}

最新更新