我使用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请帮助。
1条答案
按热度按时间pkwftd7m1#
我在设置SWAG和Authelia后遇到了这个问题。
tl;dr的问题是SWAG默认设置为允许16 k报头,但Authelia默认仅配置为允许4k报头。
我的修复方法是更新Authelia的配置,如下所示,以匹配nginx设置:
https://www.authelia.com/configuration/prologue/common/#server-buffers
下面是nginx配置行,如果您想交叉引用您的设置当前使用的:
http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers