返回xml過長時被nginx截斷的解決辦法

2021-09-08 17:47:39 字數 1472 閱讀 5667

返回xml過長時被nginx截斷的解決辦法

問題描述:

通過網頁獲取資料,資料格式為xml。當xml比較短時,可以正常獲取資料。但是xml長度過長時不能正常獲取資料,通過觀察返回資料的源**,發現xml被截斷了。

伺服器環境:centos 6.5,nginx 1.0.15,php 5.3.3

解決方法:

對比發現,使用apache代替nginx的時候可以正常獲取長的xml資料。確定問題出現在nginx的配置上。

檢視ngnix日誌(yum安裝預設目錄:/var/log/nginx/)發現問題所在。

問題出現在此時nginx臨時向/var/lib/nginx/tmp/目錄下寫入了臨時資料,而執行nginx的使用者沒有該目錄的寫入許可權。

解決該許可權問題後問題解決。

另外php.ini nginx 對請求大小的配置也可能有影響,http協議中使用content-length這個頭來告知資料的長度。

過php請求介面時發現介面的內容輸出沒有完整的返回整個資料,早上只修改了nginx api_metrics外掛程式裡的計算response大小的**,觀察日誌發現一條:

該目錄無法被nginx的nobody賬戶訪問,那就設定許可權:

sudo chown -r nobody:nobody /usr/local/nginx/proxy_temp/

重新整理瀏覽器,一切正常。

出現這個問題的原因是nginx裡對於小的反向**請求是使用記憶體作中轉,對於稍微大一點的,是使用檔案系統來做中轉。

然後之前除錯nginx外掛程式的時候,為了方便訪問日誌等資料就在root下除錯的,部分子目錄被nginx刪除後重建,owner變了,所以正式的nginx反而不能訪問了。

ps:要先用命令查一下50上的臨時資料夾在那個地方,對應的許可權是什麼 ,不同環境的路徑是不一樣的

xml過長時被nginx截斷

通過網頁獲取資料,資料格式為xml。當xml比較短時,可以正常獲取資料。但是xml長度過長時不能正常獲取資料,通過觀察返回資料的源 發現xml被截斷了。對比發現,使用apache代替nginx的時候可以正常獲取長的xml資料。確定問題出現在nginx的配置上。檢視ngnix日誌 yum安裝預設目錄 ...

PHP返回內容過長時被nginx截斷的解決辦法

檢視了html源 發現html源 被截斷了。因此,導致網頁內容顯示不全。之後的整個分析過程繞了一大圈,即是tcpdump,又是用tcpflow進行網路包分析。最後,還是從nginx的錯誤日誌中發現了端倪。在nginx的錯誤日誌中發現如下資訊 2016 03 29 06 08 10 crit 7042...

PHP返回內容過長時被nginx截斷的解決辦法

檢視了html源 發現html源 被截斷了。因此,導致網頁內容顯示不全。之後的整個分析過程繞了一大圈,即是tcpdump,又是用tcpflow進行網路包分析。最後,還是從nginx的錯誤日誌中發現了端倪。在nginx的錯誤日誌中發現如下資訊 2016 03 29 06 08 10 crit 7042...