Nginx 431 -请求标头字段太大-在反向代理中

xmakbtuz  于 2023-01-08  发布在  Nginx
关注(0)|答案(1)|浏览(389)

我使用nginx中的auth_request模块作为身份验证模块。

location ~ ^/apigw/cws/(.*)$ {
        log_subrequest on;
        auth_request  /_sessionvalidate;
        auth_request_set $token $upstream_http_authorization;
        proxy_set_header Authorization $token;
        proxy_pass http://cws/$1$is_args$args;
}


location = /_sessionvalidate {
        internal;
        proxy_method POST;
        proxy_busy_buffers_size   512k;
        proxy_buffers   4 512k;
        proxy_buffer_size   256k;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://apigw/sessionValidate/;
}

这里的问题是当我试图将sessionvalidate传递的令牌传递给cws上游服务器时

proxy_set_header Authorization $token;

我收到431错误。我尝试在server/http指令中设置以下内容

large_client_header_buffers 4 64k;
        client_header_buffer_size 16k;

但我仍然面临错误。2我不知道如何确保增加上游请求的标题大小。3请帮助。

pkwftd7m

pkwftd7m1#

我在设置SWAG和Authelia后遇到了这个问题。
tl;dr的问题是SWAG默认设置为允许16 k报头,但Authelia默认仅配置为允许4k报头。
我的修复方法是更新Authelia的配置,如下所示,以匹配nginx设置:

# Authelia `configuration.yml`

server:
  buffers:
    read: 16384
    write: 16384

https://www.authelia.com/configuration/prologue/common/#server-buffers
下面是nginx配置行,如果您想交叉引用您的设置当前使用的:

# `nginx.conf`

http {
  large_client_header_buffers 4 16k;
}

http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers

相关问题