如何配置 NGINX 入口控制器以提高客户端请求正文的大小、激活 CORS 以允许其他标头,以及将 WebSocket 与 Amazon EKS 配合使用?

上次更新时间:2021 年 12 月 10 日

我想配置 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_sizeupload_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-timeoutproxy-send-timeout 的值。

在以下示例中,proxy read timeoutproxy send timeout 设置为 120 秒:

nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"

注意:前面两个注释的默认值为 60 秒


这篇文章对您有帮助吗?


您是否需要账单或技术支持?