С этой конфигурацией:
server {
listen 8080;
location / {
if ($http_cookie ~* "mycookie") {
proxy_set_header X-Request $request;
proxy_pass http://localhost:8081;
}
}
}
У меня есть эта ошибка при перезагрузке службы nginx:
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
Эта конфигурация работает нормально, но она не делает то, что я хочу:
server {
listen 8080;
location / {
proxy_set_header X-Request $request;
if ($http_cookie ~* "mycookie") {
proxy_pass http://localhost:8081;
}
}
}
Почему я не могу поместить директиву proxy_set_header в предложение if?
nginx
proxy
configuration
Neuquino
источник
источник
Ответы:
Предполагая, что вы на самом деле хотели спросить: «Как я могу заставить это работать», как насчет просто переписать, чтобы заголовок всегда передавался, но ему было присвоено какое-то игнорируемое значение, если вы не хотите, чтобы он устанавливался.
источник
""
, верно?«Если», как правило, плохая практика в конфигурации nginx. Вы можете использовать модуль карты, чтобы заставить вещи работать. см. http://nginx.org/en/docs/http/ngx_http_map_module.html http://wiki.nginx.org/HttpMapModule
источник