嵌套位置nginx

我无法理解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 { ... } }