我们用于kubernetes/ingress-nginxAzure AKS 实例。我有一个大约 9kb 长的 URI(它包含我们的身份服务器的apost_logout_redirect_uri和 a 非常长,在 .Net core 2.2 中运行)。id_token_hint
但是,我无法通过入口,因为 nginx 拒绝使用414 URI Too Long. 我可以在 Nginx 日志中看到该请求,但在身份服务器日志中看不到该请求,因此它显然之前被退回了。
我尝试使用配置映射更新 nginx 配置,但没有成功。这些设置已应用(并且之前帮助我解决了其他问题)。然而,在这种情况下,我的尝试似乎都不起作用。这是我正在使用的配置图:
apiVersion: v1
data:
http2-max-header-size: "64k"
http2-max-field-size: "32k"
proxy-body-size: "100m"
client-header-buffer-size: "64k"
large-client-header-buffers: "4 64k"
kind: ConfigMap
metadata:
name: nginx-ingress-controller
namespace: kube-system
Run Code Online (Sandbox Code Playgroud)
以下是身份服务器的入口注释:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress-name
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/send_timeout: "180"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "180"
nginx.ingress.kubernetes.io/proxy-read-timeout: "180"
nginx.ingress.kubernetes.io/proxy-send-timeout: "180"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: "authorization,content-type"
nginx.ingress.kubernetes.io/proxy-body-size: 250m
nginx.ingress.kubernetes.io/proxy-buffer-size: "64k"
Run Code Online (Sandbox Code Playgroud)
最后,如果我检查 pod 上的 nginx 配置,它确实在全局配置部分包含我更新的值。
...
keepalive_timeout 75s;
keepalive_requests 100;
client_body_temp_path /tmp/client-body;
fastcgi_temp_path /tmp/fastcgi-temp;
proxy_temp_path /tmp/proxy-temp;
ajp_temp_path /tmp/ajp-temp;
client_header_buffer_size 64k;
client_header_timeout 60s;
large_client_header_buffers 4 64k;
client_body_buffer_size 8k;
client_body_timeout 60s;
http2_max_field_size 32k;
http2_max_header_size 64k;
http2_max_requests 1000;
types_hash_max_size 2048;
server_names_hash_max_size 1024;
server_names_hash_bucket_size 64;
map_hash_bucket_size 64;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 64;
variables_hash_bucket_size 128;
variables_hash_max_size 2048;
underscores_in_headers off;
ignore_invalid_headers on;
...
Run Code Online (Sandbox Code Playgroud)
任何信息或建议将不胜感激,谢谢!
Pin*_*eep -4
要解决此问题,请编辑 nginx.conf。打开终端或使用 ssh 客户端登录远程服务器。键入以下命令,使用文本编辑器(例如 vi、joe 或 nano)编辑 nginx.conf:
\n\n# vi /etc/nginx/nginx.conf\nRun Code Online (Sandbox Code Playgroud)\n\n使用纳米文本编辑器:
\n\n$ sudo nano /etc/nginx/nginx.conf\nRun Code Online (Sandbox Code Playgroud)\n\n必须以 root 身份运行:
\n\n# vi /usr/local/nginx/conf/nginx.conf\nRun Code Online (Sandbox Code Playgroud)\n\n将以下行添加到 http 或服务器或位置上下文以增加 nginx.conf 中的大小限制,输入:
\n\n# set client body size to 2M #\nclient_max_body_size 2M;\nRun Code Online (Sandbox Code Playgroud)\n\nclient_max_body_size 指令指定客户端请求可接受的最大主体大小,由请求标头中的 Content-Length 行指示。如果大小大于给定的大小,则客户端会收到错误 \xe2\x80\x9cRequest Entity Too Large\xe2\x80\x9d (413)。\n保存并关闭文件。重新加载 nginx Web 服务器,输入:
\n\n# /usr/local/nginx/sbin/nginx -s reload\nRun Code Online (Sandbox Code Playgroud)\n\n使用 nginx 本身重新加载它:
\n\n# /sbin/nginx -s reload\nRun Code Online (Sandbox Code Playgroud)\n\n对于 RHEL/CentOS/Debian/Ubuntu Linux,请尝试:
\n\n# service nginx reload\nRun Code Online (Sandbox Code Playgroud)\n\n如果您使用的是基于 systemd 的系统,请运行:
\n\n$ sudo systemctl reload nginx.service\nRun Code Online (Sandbox Code Playgroud)\n\n参考:
\n\n| 归档时间: |
|
| 查看次数: |
6806 次 |
| 最近记录: |