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;