Mit dieser Konfiguration:
server {
listen 8080;
location / {
if ($http_cookie ~* "mycookie") {
proxy_set_header X-Request $request;
proxy_pass http://localhost:8081;
}
}
}
Ich habe diesen Fehler, wenn ich den Nginx-Dienst neu lade:
Reloading nginx configuration: nginx: [emerg] "proxy_set_header" directive is not allowed here in /etc/nginx/conf.d/check_cookie.conf:5
nginx: configuration file /etc/nginx/nginx.conf test failed
Diese Konfiguration funktioniert einwandfrei, macht aber nicht das, was ich will:
server {
listen 8080;
location / {
proxy_set_header X-Request $request;
if ($http_cookie ~* "mycookie") {
proxy_pass http://localhost:8081;
}
}
}
Warum kann ich die Anweisung proxy_set_header nicht in eine if-Klausel einfügen ?
nginx
proxy
configuration
Neuquino
quelle
quelle
Antworten:
Angenommen, Sie wollten tatsächlich fragen: "Wie kann ich das zum Laufen bringen?", Wie wäre es, wenn Sie nur neu schreiben, damit der Header immer übergeben wird, aber auf einen ignorierten Wert gesetzt wird, wenn Sie nicht möchten, dass er gesetzt wird.
quelle
""
, richtig?'If' ist in der Nginx-Konfiguration im Allgemeinen eine schlechte Praxis. Sie können das Kartenmodul verwenden, damit die Dinge funktionieren. Siehe http://nginx.org/en/docs/http/ngx_http_map_module.html http://wiki.nginx.org/HttpMapModule
quelle