nginx 代理服务器无法上传大于 1 MB 的文件

标签 nginx

下面是我正在使用的 nginx 配置(nginx 是一个 docker 容器)- Nginx 用作所有后端 api 服务器的代理服务器。当我尝试上传文件时,如果大小大于 1 MB,则会出现错误。尝试了给出的所有可能的解决方案,但无法解决。任何帮助都会有用。

server {
    listen 80;
    server_name abcd.dev;
    #rewrite ^/(.*)/$ /$1 permanent;
    charset utf-8;
    keepalive_timeout 300s;
    gzip on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    client_body_in_file_only clean;
    client_body_buffer_size 10M;
    client_max_body_size 10M;

    sendfile on;
    send_timeout 300s;

    proxy_buffering off;
    proxy_request_buffering off;
    proxy_buffer_size 10M;
    proxy_buffers 32 4m;
    proxy_busy_buffers_size 10m;
    proxy_max_temp_file_size 1024m;
    proxy_temp_file_write_size 10m;

    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;


    proxy_set_header HOST $host;

    #X-Forwarded-Proto header gives the proxied server information about the schema of the original client request (whether it was an http or an https request).
    proxy_set_header X-Forwarded-Proto $scheme;

    #The X-Real-IP is set to the IP address of the client so that the proxy can correctly make decisions or log based on this information.
    proxy_set_header X-Real-IP $remote_addr;

    #The X-Forwarded-For header is a list containing the IP addresses of every server the client has been proxied through up to this point.
    #In the example above, we set this to the $proxy_add_x_forwarded_for variable.
    #This variable takes the value of the original X-Forwarded-For header retrieved from the client and adds the Nginx server's IP address to the end.
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    error_page 404 /custom_404.html;
        location = /custom_404.html {
                root /usr/share/nginx/html;
                internal;
        }

    error_page 500 502 503 504 /custom_50x.html;
        location = /custom_50x.html {
                root /usr/share/nginx/html;
                internal;
    }

    location / {
      location ~ ^/(uploads/|vendor/|images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {
            proxy_pass http://ui-service;
      }
      if ($domain) {
        set $args $args&nethumUrl=$domain;
        proxy_pass http://ui-service$uri$is_args$args;
      }
      proxy_pass http://ui-service$uri$is_args$args;

    }
...........
}

我可以上传任何小于 1MB 的文件,但无法上传更大的文件。出现以下错误 -

error 2017/03/02 06:52:37 [error] 38#38: *89 recv() failed (104: Connection reset by peer) while reading response header from upstream 

最佳答案

您的 php.ini upload_max_filesize 设置是什么?另请尝试在 http 指令(在/etc/nginx/nginx.conf 中)以及 location 指令中添加 client_max_body_size 10M;

关于nginx 代理服务器无法上传大于 1 MB 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548832/

相关文章:

nginx - 使用 Let's encrypt 获得的 SSL 证书的访问权限

html - nginx 提供静态文件,但当我转到路线时,它会下载 .html

Nginx error_page指令: Can I pass an argument?

django - 将 Gunicorn 用于 Django 的 SSL

google-chrome - 加载大文件时,nginx 上的 ERR_CONTENT_LENGTH_MISMATCH 和 Chrome 上的代理

ssl - 网页 gRPC + NGINX TLS 配置

ssl - Nginx - 使用现有的 .crt、.key 和 CA.pem 文件设置 SSL

nginx - 找到nginx版本了吗?

Nginx 入口 Controller 路径重写不起作用

python - uwsgi 破管 - django, nginx