2014-04-24 56 views
6

我試圖設置nginx來處理文件上傳,並在完成後將文件信息傳遞到後端服務器。我在https://coderwall.com/p/swgfvw遇到過一篇文章,它顯示瞭如何做到這一點,並且我能夠看到文件正在上傳到/ tmp目錄。不過,我還想將文件名和類型(Content-Disposition和Content-Type)傳遞給後端服務器。nginx將文件類型傳遞到後端服務器

我試圖捕捉什麼是在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 

其次是數據。

我要上傳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 

到我的後端。任何幫助,這是非常感謝。

P.S:希望在這裏可以解決這個問題嗎? (試過超級用戶,但它似乎並沒有太多的活動)

+0

你有沒有碰運氣?文件頂部的Content-Disposition標題是預期的行爲嗎?如果是這樣,你以後會將它們去掉以顯示文件(圖像)或實例嗎? – Mike

+0

其實不,我決定現在不要使用這種方法,但是確實認爲解析上游服務器上的文件是獲得這個工作的一種方法(當我有機會時可能會嘗試類似的方式)。 –

+0

我也想知道是否有人有這樣的幸運...... – stackular

回答

0

如果頭被忽略,嘗試

proxy_pass_header Content-Disposition; 

,或者直接通過

proxy_set_header  Content-Disposition $http_content_disposition; 
+0

嘗試過它們,但仍未在後端服務器上收到Content-Dispostion :( –

0

在自定義頁眉的下劃線是悄無聲息在nginx中忽略,可能有幫助的選項

underscores_in_headers on;

相關問題