将文件上传到Nginx

use*_*890 5 post nginx http-post

有没有一种方法可以使用nginx通过http将文件上传到服务器?

我有一个程序,该程序基本上使用curl和通过HTTP的POST方法将文件发送到完全不同的企业软件。我们希望复制类似的内容,但遇到障碍。

我已经安装了nginx并进行了基本配置,我希望能够上传/ data / files / incoming下的文件

server {
    listen testserv1;

    location /upload/ {
      limit_except POST PUT { deny all; }
      client_body_temp_path /data/files/incoming/;
      client_body_in_file_only on;
      client_body_buffer_size 128k;
      client_max_body_size 100M;
      proxy_pass_request_headers on;
      proxy_set_body $request_body_file;
      proxy_pass http://127.0.0.1/upload;
      proxy_redirect off;
    }
Run Code Online (Sandbox Code Playgroud)

我基本上在nginx.conf上保留了常规配置,并添加了上面的内容。所以我的问题是,我怎么知道实际上在工作?我在另一台服务器上尝试运行程序,该程序据说可以发布文件,但什么也没有。有没有办法从另一个系统测试此配置?我在配置上缺少什么吗?

任何帮助,任何事情都将不胜感激。

Clé*_*don 7

您可以通过在 URL 中指定文件名来完成此操作,而无需使用任何外部模块。我在没有代理的情况下进行了测试,但它应该能够工作:

server {
    listen testserv1;

    location ~ "/upload/([0-9a-zA-Z-.]*)$" {
        dav_methods  PUT DELETE MKCOL COPY MOVE;
        client_body_temp_path /tmp/incoming;
        alias     /data/files/incoming/$1;
        create_full_put_path   on;
        dav_access             group:rw  all:r;

        client_body_in_file_only on;
        client_body_buffer_size 128k;
        client_max_body_size 100M;
        proxy_pass_request_headers on;
        proxy_set_body $request_body_file;
        proxy_pass http://127.0.0.1/upload;
        proxy_redirect off;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用:curl -T test.zip http://testserv1/upload/text.zip