我想配置 NGINX 入口控制器,以增加 Amazon Elastic Kubernetes Service(Amazon EKS)集群的客户端请求正文的大小。我还想激活跨源资源共享(CORS)以允许额外的标头,并将 WebSocket 与 NGINX 入口控制器一起使用。
简短描述
选择以下配置选项之一:
- 要增加客户端请求正文的大小,请完成配置最大正文大小部分中的步骤。
- 要激活 CORS 以允许其他标头,请完成激活 CORS 部分中的步骤。
- 要将 WebSocket 与 NGINX 入口控制器一起使用,请完成使用 WebSocket 部分中的步骤。
解决方法
配置最大正文大小
如果您的请求的正文大小超过了客户端请求正文的最大允许大小,那么 NGINX 入口控制器会返回 HTTP 413 错误。使用 client_max_body_size 参数配置增加正文大小:
nginx.ingress.kubernetes.io/proxy-body-size: 8m
**注意:**proxy-body-size 的默认值为 1 M。请务必将该数字更改为所需的大小。
在某些情况下,您可能需要增加所有 POST 正文数据和文件上传的最大大小。对于 PHP,必须在 php.ini 配置中增加 post_max_size 和 upload_max_file_size 值。
激活 CORS
要在入口规则中激活 CORS,请添加以下注释:
nginx.ingress.kubernetes.io/enable-cors: "true"
以下示例显示接受了 X-Forwarded-For 标头:
nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
有关更多信息,请参阅 Kubernetes 网站上的 Enable CORS。
使用 WebSocket
NGINX 支持 WebSocket,无需额外配置。为避免连接关闭,请增加 proxy-read-timeout 和 proxy-send-timeout 值。
在以下示例中,代理读取超时和代理发送超时设置为 120 秒:
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
**注意:**前两个注释的默认值为 60 秒。
相关信息
Kubernetes 网站上的注释