我想配置 NGINX 入口控制器以提高我的 Amazon Elastic Kubernetes Service (Amazon EKS) 集群的客户端请求正文的大小。我还想激活跨源资源共享 (CORS) 以允许其他标头,并将 WebSocket 与 NGINX 入口控制器配合使用。
简短描述
选择下面的一种配置方案:
- 要提高客户端请求正文的大小,请完成配置最大正文大小部分中的步骤。
- 要激活 CORS 以允许其他标头,请完成激活 CORS 部分中的步骤。
- 要将 WebSocket 与 NGINX 入口控制器配合使用,请完成使用 WebSocket 部分中的步骤。
解决方法
配置最大正文大小
如果您的正文大小请求超过客户端请求正文允许的最大大小,则 NGINX Ingress 控制器将返回 HTTP 413 错误。使用 client_max_body_size 参数配置更大的大小:
nginx.ingress.kubernetes.io/proxy-body-size: 8m
**注意:**proxy-body-size 的默认值为 1 M。请确保将数字更改为所需的大小。
**注意:**在某些情况下,您可能需要提高所有帖子正文数据和文件上传的最大大小。对于 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"
您可以在 NGINX 入口控制器文档的启用 CORS(来自 GitHub 网站)部分找到其他标头。
使用 WebSocket
NGINX 支持 WebSocket(来自 NGINX 网站)版本 1.3 或更高版本,无任何要求。为避免连接关闭,必须提高 proxy-read-timeout 和 proxy-send-timeout 的值。
在以下示例中,proxy read timeout 和 proxy send timeout 设置为 120 秒:
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
**注意:**前面两个注释的默认值为 60 秒。