add_header für bestimmte request_uri

add_header für bestimmte request_uri

Die App übernimmt das gesamte Routing. Dieser grundlegende Konfigurationsblock funktioniert also:

location / {
    try_files $uri $uri/ /index.html;
}

Das Problem ist, dass ich einen benutzerdefinierten Header hinzufügen möchte, wenn ein Besucher eine bestimmte URI anfordert. Zum Beispiel /content. Nun, das muss so einfach sein wie:

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

Aber das funktioniert nicht. Nginx erstellt diesen Header nicht. Dann habe ich versucht, die try_filesDirektive aus demInhaltBlock, aber das funktioniert offensichtlich nicht, da es keinen "echten" /contentOrdner im Stammverzeichnis gibt. Daher wirft nginx404 Nicht gefundenFehler.

Ich habe auch versucht, diesen Block in den Stammstandortblock zu verschieben. Funktioniert auch nicht.


In Apache lässt sich dies ganz einfach folgendermaßen erledigen:

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

Antwort1

Sie können den Header mithilfe einer zugeordneten Variable festlegen. Wenn die Variable auf eine leere Zeichenfolge festgelegt ist, wird der Header stillschweigend verworfen.

Zum Beispiel:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

verwandte Informationen