У меня проблемы с пониманием вложенных мест в nginx. У меня есть два местоположения с некоторыми общими директивами конфигурации, поэтому вместо того, чтобы повторять директивы, я бы предпочел повторить URI, используя регулярное выражение:
location ~ /a|/b {
location /a {
}
location /b {
}
}
Однако это дает ошибку
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Без или, |
кажется, все в порядке.
location ~ /a {
location /a {
}
}
Что я делаю неправильно? Есть ли лучший способ сделать это, ничего не повторяя? Могу ли я сгруппировать места по-другому?
Ответы:
Старый вопрос, но проблема в том, что родительское расположение является местоположением регулярного выражения, а вложенные расположения являются префиксными местоположениями.
Вы можете определять вложенные префиксные местоположения только в том случае, если родительское местоположение также является префиксным местоположением:
Когда родительское местоположение определяется регулярным выражением, любые вложенные расположения также должны быть определены регулярным выражением:
Однако вы также можете определить вложенные расположения регулярных выражений, если родительское расположение является префиксным:
источник
/b
будет выдавать ошибку?location /a { }
опустите шаблон - имеет ли значение порядок?