我怎样才能在NGINXconfiguration中的两个位置有相同的规则?
我怎样才能在NGINXconfiguration中的两个位置有相同的规则?
我已经尝试了以下
server { location /first/location/ | /second/location/ { .. .. } }
但nginx重新加载抛出这个错误:
nginx: [emerg] invalid number of arguments in "location" directive**
尝试
location ~ ^/(first/location|second/location)/ { ... }
〜意味着使用正则expression式的url。 ^手段检查从第一个字符。 这将寻找一个/其次是任一个地点,然后是另一个/。
另一种select是使用包含文件在两个前缀位置重复规则。 由于前缀位置在configuration中与位置无关,因此在稍后添加其他正则expression式位置时,使用它们可以节省一些混淆。
server { location /first/location/ { include shared.conf; } location /second/location/ { include shared.conf; } }
正则expression式和包含文件都是很好的方法,我经常使用这些。 但另一种select是使用命名位置,这在许多情况下是一种有用的方法,尤其是更复杂的方法。 标准的“如果是邪恶的”页面基本上显示了以下作为做事的好方法:
error_page 418 = @common_location; location /first/location/ { return 418; } location /second/location/ { return 418; } location @common_location { # The common configuration... }
这是一个简短而有效的方法:
location ~ (patternOne|patternTwo){ #rules etc. }
所以人们可以很容易地使用简单的pipe道语法指向相同的位置块/规则的多个模式。
对于inheritance情况:
location /first { # do some stuff here, and than go to /base try_files /base; } location /second { # do some other stuff here, and than go to /base try_files /base; } location /base { # base stuff here }