Mam problem ze zrozumieniem zagnieżdżonych lokalizacji w Nginx. Mam dwie lokalizacje ze wspólnymi dyrektywami konfiguracyjnymi, więc zamiast powtarzać dyrektywy, wolę powtarzać URI przy użyciu wyrażenia regularnego:
location ~ /a|/b {
location /a {
}
location /b {
}
}
Daje to jednak błąd
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Bez lub |
wydaje się to w porządku.
location ~ /a {
location /a {
}
}
Co ja robię źle? Czy istnieje lepszy sposób na zrobienie tego bez powtarzania czegokolwiek? Czy mogę grupować lokalizacje w inny sposób?
Odpowiedzi:
Stare pytanie, ale problemem jest to, że lokalizacja nadrzędna jest lokalizacją wyrażenia regularnego, podczas gdy lokalizacje zagnieżdżone są lokalizacjami prefiksów.
Można zdefiniować zagnieżdżone lokalizacje prefiksów tylko wtedy, gdy lokalizacja nadrzędna jest także lokalizacją prefiksu:
Gdy lokalizacja nadrzędna jest zdefiniowana za pomocą wyrażenia regularnego, wszelkie zagnieżdżone lokalizacje muszą być również zdefiniowane za pomocą wyrażeń regularnych:
Można jednak również zdefiniować zagnieżdżone lokalizacje wyrażenia regularnego, gdy lokalizacja nadrzędna jest lokalizacją prefiksu:
źródło
/b
zgłosi błąd?location /a { }
pominiesz płytę grzewczą - czy kolejność ma znaczenie?