gpt4 book ai didi

nginx - 414 在 Kubernetes 上使用 Nginx Ingress 请求 URI 太长

转载 作者:行者123 更新时间:2023-12-02 11:47:16 33 4
gpt4 key购买 nike

我们正在使用 kubernetes/ingress-nginx对于我们的 Azure AKS 实例。我有一个大约 9kb 长的 URI(它包含一个 post_logout_redirect_uri 和一个非常长的 id_token_hint,用于我们的身份服务器,在 .Net core 2.2 中运行)。

但是,我无法通过入口,因为 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

以下是身份服务器的入口注释:
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"

最后,如果我检查 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;
...

任何信息或建议将不胜感激,谢谢!

最佳答案

我还尝试了以下注释:

nginx.ingress.kubernetes.io/large_client_header_buffers: 200m
nginx.ingress.kubernetes.io/proxy-body-size: 200m
他们没有帮助,帮助的是我在 Ingress Controller yaml 中添加的代码段:
nginx.ingress.kubernetes.io/server-snippet: |
http2_max_header_size 256k;
http2_max_field_size 256k;

关于nginx - 414 在 Kubernetes 上使用 Nginx Ingress 请求 URI 太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090675/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com