如何配置 NGINX 入口控制器以增加客户端请求正文大小,激活 CORS 以允许更多标头,以及将 WebSocket 与 Amazon EKS 一起使用?

1 分钟阅读
0

我想配置 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_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"

有关更多信息,请参阅 Kubernetes 网站上的 Enable CORS

使用 WebSocket

NGINX 支持 WebSocket,无需额外配置。为避免连接关闭,请增加 proxy-read-timeoutproxy-send-timeout 值。

在以下示例中,代理读取超时代理发送超时设置为 120 秒:

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

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

相关信息

Kubernetes 网站上的注释

AWS 官方
AWS 官方已更新 1 年前