nginx将文件类型传递到后端服务器

nginx将文件类型传递到后端服务器,nginx,http-headers,reverse-proxy,Nginx,Http Headers,Reverse Proxy,我试图设置nginx来处理文件上传,并在上传完成后将文件信息传递到后端服务器。我在上遇到一篇文章,展示了如何做到这一点,我能够看到一个文件被上传到/tmp目录。但是,我还希望将文件名和类型(内容处置和内容类型)传递给后端服务器 我尝试捕获在http服务器端口接收到的内容,并查看以下内容 POST /upload HTTP/1.1 User-Agent: curl/7.32.0 Host: MyHostName Accept: */* Content-Length: 4431 Expect: 10

我试图设置nginx来处理文件上传,并在上传完成后将文件信息传递到后端服务器。我在上遇到一篇文章,展示了如何做到这一点,我能够看到一个文件被上传到/tmp目录。但是,我还希望将文件名和类型(内容处置和内容类型)传递给后端服务器

我尝试捕获在http服务器端口接收到的内容,并查看以下内容

POST /upload HTTP/1.1
User-Agent: curl/7.32.0
Host: MyHostName
Accept: */*
Content-Length: 4431
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------6060af4f937c14c9

--------------------------6060af4f937c14c9
Content-Disposition: form-data; name="filedata"; filename="sessions.txt"
Content-Type: text/plain
其次是数据

用于上载的My nginx位置块为

        location /upload {
                limit_except POST       { deny all; }

                client_body_temp_path           /tmp/;
                client_body_in_file_only        on;
                client_body_buffer_size         128K;
                client_max_body_size            100M;

                proxy_redirect                  off;
                proxy_set_header                X-FILE $request_body_file;
                proxy_set_header                X-Forwared-For  $proxy_add_x_forwarded_for;
                proxy_set_header                Host    $http_host;
                proxy_set_header                X-NginX-Proxy   true;
                proxy_set_header                Connection "";
                proxy_pass_request_headers      on;
                proxy_set_body                  off;
                proxy_http_version              1.1;
                proxy_pass                      http://my_backend;
        }
有了它,我可以在后端传递并接收以下内容

'content-type': 'multipart/form-data; boundary=------------------------6060af4f937c14c9'
'x-file': '/tmp/0000000001'
但我真的很想知道我怎么才能拿到

Content-Disposition: form-data; name="filedata"; filename="sessions.txt"
Content-Type: text/plain
到我的后端。非常感谢您的帮助


附言:希望这个问题没问题吧?(尝试了超级用户,但似乎没有太多活动)

如果忽略了标题,请尝试

proxy_pass_header    Content-Disposition;
或者直接通过

proxy_set_header     Content-Disposition $http_content_disposition;

在nginx中,自定义标题中的下划线会被忽略,这一选项可能会有所帮助


在上的\u标题中加下划线

尝试了这两种方法,但仍然没有在后端服务器上接收到内容处理:(您有过这样的运气吗?文件顶部的内容处理头是否符合预期行为?如果是,您以后是否会将其剥离以显示文件(图)或者是实例?事实上不是,我决定暂时不使用这种方法,但我确实认为在上游服务器上解析文件是实现这一点的一种方法(如果有机会,我可能会尝试类似的方法)。我还想知道是否有人在这方面有什么运气…我也是,这似乎是一个共同的要求。nginx上传模块似乎提供了这一功能,但需要一个特殊的构建,因为nginx核心团队相信他们的产品已经足够了