14

この構成では:

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;
        }
    }
}

if 句内にproxy_set_headerディレクティブを配置できないのはなぜですか?

4

2 に答える 2

1

proxy_pass とは異なり、if ブロック内に proxy_set_header を配置することはできません。http/server/location ブロックにのみ配置できます。したがって、2番目の構成は良好です。

参照: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header

コンテキスト: http、サーバー、場所

$request 変数が何かわかりません。nginx 変数リストには表示されません: http://wiki.nginx.org/HttpCoreModule#Variables。ここで何を達成しようとしていますか?

于 2013-05-12T04:02:00.313 に答える