nginx-ingress 控制器 wordpress 大文件上传问题
nginx-ingress controller wordpress big files upload issue
这是一个 EKS 集群,其中我有一个 ELB 代理流量到集群中的 Nginx 控制器。 nginx-configuration ConfigMap定义如下:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-configuration
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
data:
use-proxy-protocol: "false"
use-forwarded-headers: "true"
我的 Ingress 资源是这样的。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/proxy-body-size: "50m"
nginx.org/proxy-connect-timeout: "30s"
nginx.org/proxy-read-timeout: "20s"
nginx.org/client-max-body-size: "50m"
name: wordpress
namespace: test
spec:
rules:
- host: test.mrcartr.nl
http:
paths:
- backend:
serviceName: wordpress-mrcartr
servicePort: 80
path: /
使用上述配置,我无法上传大文件,即使在 .htaccess(后端)中增加了适当的限制。
实际上,我已经创建了一个并行环境来在没有 Nginx 入口的情况下对其进行测试并且它有效。我的意思是,如果我的流量从 ELB 转发到后端,一切正常。
可以肯定的是,它与入口控制器配置有关。然而,我已经测试了几个不同的配置,但我没能成功。 ngnix-controller pod 中的日志始终相同:
GET /wp-admin/admin-ajax.php?action=updraft_ajax&subaction=activejobs_list&nonce=7ddb774c57&downloaders= HTTP/1.1" 200 460 "https://test.mrcartr.nl/wp-admin/options-general.php?page=updraftplus&tab=backups" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
我对 NGINX 没有真正的经验,欢迎任何帮助。
显然,罪魁祸首是 nginx.org/client-max-body-size: "50m"
如果请求中的大小超过配置值,则向客户端返回413(请求实体太大)错误。请注意,浏览器无法正确显示此错误。将大小设置为 0 会禁用客户端请求正文大小的检查 - nginx.org/client-max-body-size: "0"
使用 ConfigMap 和 Annotations 的更多详细信息here
将以下注释添加到您的 Ingres 控制器以增加主体尺寸。
nginx.ingress.kubernetes.io/proxy-body-size: 128m
这是一个 EKS 集群,其中我有一个 ELB 代理流量到集群中的 Nginx 控制器。 nginx-configuration ConfigMap定义如下:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-configuration
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
data:
use-proxy-protocol: "false"
use-forwarded-headers: "true"
我的 Ingress 资源是这样的。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/proxy-body-size: "50m"
nginx.org/proxy-connect-timeout: "30s"
nginx.org/proxy-read-timeout: "20s"
nginx.org/client-max-body-size: "50m"
name: wordpress
namespace: test
spec:
rules:
- host: test.mrcartr.nl
http:
paths:
- backend:
serviceName: wordpress-mrcartr
servicePort: 80
path: /
使用上述配置,我无法上传大文件,即使在 .htaccess(后端)中增加了适当的限制。 实际上,我已经创建了一个并行环境来在没有 Nginx 入口的情况下对其进行测试并且它有效。我的意思是,如果我的流量从 ELB 转发到后端,一切正常。 可以肯定的是,它与入口控制器配置有关。然而,我已经测试了几个不同的配置,但我没能成功。 ngnix-controller pod 中的日志始终相同:
GET /wp-admin/admin-ajax.php?action=updraft_ajax&subaction=activejobs_list&nonce=7ddb774c57&downloaders= HTTP/1.1" 200 460 "https://test.mrcartr.nl/wp-admin/options-general.php?page=updraftplus&tab=backups" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
我对 NGINX 没有真正的经验,欢迎任何帮助。
显然,罪魁祸首是 nginx.org/client-max-body-size: "50m"
如果请求中的大小超过配置值,则向客户端返回413(请求实体太大)错误。请注意,浏览器无法正确显示此错误。将大小设置为 0 会禁用客户端请求正文大小的检查 - nginx.org/client-max-body-size: "0"
使用 ConfigMap 和 Annotations 的更多详细信息here
将以下注释添加到您的 Ingres 控制器以增加主体尺寸。
nginx.ingress.kubernetes.io/proxy-body-size: 128m