我无法理解 nginx 中的嵌套位置。我有两个位置有一些共同的配置指令,所以与其重复指令,我更喜欢使用正则表达式重复 URI:
location ~ /a|/b {
location /a {
}
location /b {
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这给出了错误
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Run Code Online (Sandbox Code Playgroud)
不过,没有 or|
似乎没问题。
location ~ /a {
location /a {
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?有没有更好的方法来做到这一点而不重复任何事情?我可以以其他方式对位置进行分组吗?
Day*_*ayo 138
老问题,但问题是父位置是正则表达式位置,而嵌套位置是前缀位置。
当父位置也是前缀位置时,您只能定义嵌套前缀位置:
location /a {
location /a {
# You can also skip this location and just write
# your code directly under the parent location
}
location /a/b {
...
}
}
Run Code Online (Sandbox Code Playgroud)
当父位置由正则表达式定义时,任何嵌套位置也必须由正则表达式定义:
location ~ ^/(a|b) {
location ~ ^/a {
...
}
location ~ ^/b {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当父位置是前缀位置时,您也可以定义嵌套的正则表达式位置:
location /a/b {
location ~ /a {
...
}
location ~ /b {
...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
99438 次 |
最近记录: |