我无法理解nginx中的嵌套位置。 我有两个位置的一些configuration指令的共同点,所以不要重复指令,我宁愿重复使用正则expression式的URI:
location ~ /a|/b { location /a { } location /b { } }
但是,这给出了错误
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
没有或者|
尽pipe如此,似乎还好。
location ~ /a { location /a { } }
我究竟做错了什么? 有没有更好的方式做到这一点,而不重复任何事情? 我能以另一种方式分组吗?
老问题,但问题是因为父位置是一个正则expression式位置,而嵌套的位置是前缀位置。
当父位置也是前缀位置时,您只能定义嵌套的前缀位置:
location /a { location /a { # You can also skip this location and just write # your code directly under the parent location } location /a/b { ... } }
当父级位置由正则expression式定义时,任何嵌套位置也必须由正则expression式定义:
location ~ ^/(a|b) { location ~ ^/a { ... } location ~ ^/b { ... } }
但是,您也可以在父位置是前缀位置时定义嵌套的正则expression式位置:
location /a/b { location ~ /a { ... } location ~ /b { ... } }