Ich habe Probleme beim Verstehen von verschachtelten Positionen in Nginx. Ich habe zwei Speicherorte mit einigen Konfigurationsanweisungen gemeinsam. Anstatt die Anweisungen zu wiederholen, würde ich es vorziehen, die URI mit einem regulären Ausdruck zu wiederholen:
location ~ /a|/b {
location /a {
}
location /b {
}
}
Dies gibt jedoch den Fehler
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Ohne das oder |
scheint es aber in Ordnung zu sein.
location ~ /a {
location /a {
}
}
Was mache ich falsch? Gibt es einen besseren Weg, dies zu tun, ohne etwas zu wiederholen? Kann ich Standorte auf andere Weise gruppieren?
Antworten:
Alte Frage, aber das Problem ist, dass der übergeordnete Speicherort ein regulärer Speicherort ist, während die verschachtelten Speicherorte Präfixspeicherorte sind.
Sie können verschachtelte Präfixspeicherorte nur definieren, wenn der übergeordnete Speicherort auch ein Präfixspeicherort ist:
Wenn ein übergeordneter Speicherort durch einen regulären Ausdruck definiert wird, müssen alle verschachtelten Speicherorte auch durch reguläre Ausdrücke definiert werden:
Sie können jedoch auch verschachtelte Regex-Speicherorte definieren, wenn der übergeordnete Speicherort ein Präfix-Speicherort ist:
quelle
/b
einen Fehler auslöst.location /a { }
Kesselschild weglassen - spielt die Bestellung eine Rolle?