1. 程式人生 > >upstream sent invalid chunked response while reading upstream

upstream sent invalid chunked response while reading upstream

再使用nginx的過程中,想通過nginx轉發一個請求,並根據請求的結果返回,進行是否需要快取。

方案一,用nginx+lua

      當時想的是lua有指令碼功能,利用lua將結果取出並將結果快取再nginx中,最終結果是取到了,但是沒法快取,原因是nginx早就執行完成了,人家該快取的就快取好了,你再怎麼折騰結果也不會改變原有結果,順便附上lua各個不中的生命週期順序。從結果上也可以看出body_filter_by_lua的時候已經無能為力了。大家耗的想法可以討論。

方案二  用nginx +微服務代理(直接改響應,從而實現)

這種方案理論上可行,但是也遇到了不少坑,nginx的快取設定一般是通過http狀態來的,其實他還有很多約束,比如標題錯誤,就是我在微服務中返回了一個RestTemplate.getForEntity 的返回值ResponseEntity物件,這都是小問題,直接轉成json以字串形式返回就沒有問題了,後來還遇到了post請求的時候無法快取,只有get型別的才能快取,當然我看到HTTP版本是不一致的POST是HTTP/1.0, GET是HTTP/1.1,這裡我沒有深究是HTTP協議導致的還是請求型別導致的,反正用GET HTTP/1.1是沒有問題的,最終把請求修改後OK。

追加:POST 或者GET不是關鍵,增加proxy_cache_methods GET HEAD POST; 就可以快取post型別請求了。

相關推薦

upstream sent invalid chunked response while reading upstream解決

問題背景:     一開始是一個下載檔案的需求,但是不能直接下載,需要通過nginx做代理轉發後,才能將檔案流輸出給合作方.然後我們將url的請求通過nginx代理到真實去下載檔案流的伺服器發現並不能下載到檔案.(是通過請求瀏覽器去下載的,瀏覽

upstream sent invalid chunked response while reading upstream

再使用nginx的過程中,想通過nginx轉發一個請求,並根據請求的結果返回,進行是否需要快取。方案一,用nginx+lua      當時想的是lua有指令碼功能,利用lua將結果取出並將結果快取再nginx中,最終結果是取到了,但是沒法快取,原因是nginx早就執行完成了

Nginx 錯誤502 upstream sent too big header while reading response header from upstream

Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經執行,但是由於某種原因(一般是讀取資源的問題)沒有執行完畢而導致PHP-CGI程序終止。 Nginx 504 Gateway Time-out的含義是所請求的閘道器沒有請求到,簡單來說就是沒有請求到可

修復Nginx 502錯誤:upstream sent too big header while reading response header from upstream

最近發現Nginx+Laravel 搭建的網站搜尋某些關鍵字時返回502錯誤。 查了一下Nginx的錯誤日誌,發現如下錯誤 2015/03/19 10:46:40 [error] 6412#0: *16436265 upstream sent too big header

upstream sent invalid header while reading response header from upstream 錯誤解決

由於最近線上出現502錯誤比較蛋疼,所以重新把nginx詳細配置做下說明,以此來查詢問題。 nginx 配置 location / { proxy_next_upstream http_500 http_502 http_504 error tim

Nginx Upstream prematurely closed connection while reading upstream...

今天發現除了火狐,其他瀏覽器在開啟後臺ckfinder都會出現 net::ERR_INCOMPLETE_CHUNKED_ENCODING 錯誤,但是本地除錯沒有這個錯誤,最終發現是伺服器的Nginx 配置上有問題,檢視error.log 顯示的是Upstream prema

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream 問題解決

配置好了 nginx.conf 和 php7.0-fpm.conf 檔案,但是要訪問 php 檔案的時候,卻不顯示任何內容或者顯示“File not found”,問題在於要訪問的 php 檔案 php7.0-fpm 沒有訪問許可權,修改下訪問許可權即可。 改成如下圖所示: 附

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream 問題解決

配置好了 nginx.conf 和 php7.0-fpm.conf 檔案,但是要訪問 php 檔案的時候,卻不顯示任何內容或者顯示“File not found”,問題在於要訪問的 php 檔案 php7.0-fpm 沒有訪問許可權,修改下訪問許可權即可。 改成如下圖所

graphite報錯:upstream prematurely closed connection while reading response header from upstream

線上監控系統使用grafana+graphite,graphite使用nginx+uwsgi啟動。有一次在grafana上監控圖出現錯誤,顯示響應式502,於是先檢查graphite-web,發現在graphite-web介面上偶爾打不開。 然後再nginx的error日誌上顯示如下資訊:

nginx: upstream timed out (110: Connection timed out) while reading response header

server{}配置中新增以下配置即可: large_client_header_buffers 4 16k; #header大小         client_max_body_size 300m; #上傳檔案大小限制  

記錄一次 docker:Primary script unknown" while reading response header from upstream

這個問題簡單翻譯過來就是: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 這行配置無法幫我找到 傳過來的檔案。試了一下寫一個 index.html 檔案進行測試,發現是有的。

nginx 超時問題: upstream timed out (110: Connection timed out) while reading response header from upstream

目錄 錯誤內容 錯誤原因 錯誤解決辦法 錯誤內容 我們可以在error.log 裡面可以看到 錯誤內容:upstream timed out (110: Connection timed out) while reading response header from upstream

failed (104: Connection reset by peer) while reading response header from upstream, client: x.x.x.x

failed (104: Connection reset by peer) while reading response header from upstream, client: x.x.x.x,

解決 recv() failed (104: Connection reset by peer) while reading response header from upstream

Nginx出現502 Bad Gateway 錯誤, 查了Nginx的錯誤日誌為: 2014/08/02 16:14:31 [error] 17029#0: *17941 recv() failed (104: Connection reset by peer) whil

nginx nodejs 502 upstream prematurely closed connection while reading response header from upstream

問題描述: 在nginx + nodejs的應用場景中,請求URL中如果含有不能進行編碼的非法字元則nodejs http server會直接socket hang up斷開連線,導致nginx報錯"upstream prematurely closed connectio

解決:The proxy server received an invalid response from an upstream server

最近在App上的呼叫介面時出現下面的錯誤資訊,導致正常頁面無法訪問。 The proxy server received an invalid response from an upstream server. Sorry for the inconvenience.

nginx [error] 15644#0: *112680 recv() failed (104: Connection reset by peer) while reading response

參考地址   https://serverfault.com/questions/543999/nginx-errors-recv-failed-104-connection-reset-by-peer-while-reading-respon/544106 網站登入的時候

【Paper Reading】Learning while Reading

協作 每一個 info ++ 平時 arr 向上 移除 否則 Learning while Reading 不限於具體的書,只限於知識的寬度 這個系列集合了一周所學所看的精華,它們往往來自不只一本書 我們之所以將自然界分類,組織成各種概念,並按其分類,

Nginx an upstream response is buffered to a temporary file

意義 http word pre 依次 rar usr 同時 -a 1.錯誤日誌:warn:an upstream response is buffered to a temporary file 解決辦法:增加fastcgi_buffers 8 4K;

記一次nginx負載均衡轉發錯誤 “no live upstreams while connecting to upstream

先描述一下環境,前段的負載均衡轉發給nginx,nginx再轉發給後端的應用伺服器。 nginx配置檔案如下: upstream ads {         server ap1:8888 max_fails=1 fail_timeout=60s;