nginx訪問返回504問題及解決
nginx訪問返回504
現(xiàn)象
nginx后端代理為報表服務(wù),錯誤日志大量出現(xiàn)上游服務(wù)超時,頁面訪問也會出現(xiàn)504返回,查看后發(fā)現(xiàn)服務(wù)本身沒問題,問題著重在nginx本身,報表服務(wù)本身屬于大查詢,返回較慢。
nginx默認(rèn)本身后端超時為60S,大查詢的返回大于60S所以會有幾率出現(xiàn)504請求失敗
報錯
2022/08/05 13:00:24 [error] 3389#e: *1092213 upstream timed out (110: Connection timed out) while reading upstream, client: 10.6. 18.19, server: localhost, request: “POST /rcenter/rpt/api/showReport HTTP/1.1”, upstream: “http://10.6.6.65:8880/rcenter/rpt/api/showReport” host: “10.6.6.67”
處理
增加后端超時時長參數(shù)
| 參數(shù) | 詳解 |
|---|---|
| proxy_connect_timeout | 與后端/上游服務(wù)器建立連接的超時時間 |
| proxy_send_timeout | 與后端/上游服務(wù)器發(fā)送請求的超時時間 |
| proxy_read_timeout | 與后端/上游服務(wù)器讀取響應(yīng)的超時時間 |
server {
listen 80;
server_name localhost;
location / {
root html;
proxy_pass http://report;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
nginx504網(wǎng)關(guān)超時解決思路
環(huán)境
前端:nginx作代理
后端:nginx+php(耳朵分發(fā)服務(wù))
問題:整套服務(wù)搭建完成之后,將打包好的ios包進(jìn)行上傳到分發(fā)服務(wù)器時,包傳遞完畢之后頁面無法自動跳轉(zhuǎn)

上述進(jìn)度條走完之后,頁面無法自動跳轉(zhuǎn)。
解決思路
剛開始,以為是php的代碼設(shè)置了超時時間,然后各種改代碼,可是沒什么卵用;然后以為是php有問題,然后修改php的超時時間,也沒什么卵用。
最后,F(xiàn)12查看頁面具體情況,發(fā)現(xiàn):

原來是網(wǎng)關(guān)超時,應(yīng)該是代理的nginx和后端nginx之間傳輸數(shù)據(jù)時發(fā)生超時。
最后,在前端nginx的配置文件中加入如下配置:
proxy_read_timeout 300
說明 該指令設(shè)置與代理服務(wù)器的讀超時時間。它決定了nginx會等待多長時間來獲得請求的響應(yīng)。
這個時間不是獲得整個response的時間,而是兩次reading操作的時間。
如果后端有大文件傳輸?shù)男枨髸r,需要將此值調(diào)大一些。
proxy_send_timeout 300
說明 這個指定設(shè)置了發(fā)送請求給upstream服務(wù)器的超時時間。
超時設(shè)置不是為了整個發(fā)送期間,而是在兩次write操作期間。
如果超時后,upstream沒有收到新的數(shù)據(jù),nginx會關(guān)閉連接
以上兩個參數(shù)默認(rèn)是60s超時,,由于上傳的ios包需要的時間超過了60s,導(dǎo)致網(wǎng)關(guān)超時。
至此,問題得到解決。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx常用配置以及代理轉(zhuǎn)發(fā)操作詳解
這篇文章主要給大家介紹了關(guān)于Nginx常用配置以及代理轉(zhuǎn)發(fā)的相關(guān)資料,nginx一般被用來做反向代理,將請求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器上,比如tomcat的應(yīng)用,需要的朋友可以參考下2023-09-09
利用nginx實現(xiàn)動靜分離的負(fù)載均衡集群實戰(zhàn)教程
這篇文章介紹了利用nginx實現(xiàn)動靜分離的負(fù)載均衡集群實戰(zhàn),本次用到的操作系統(tǒng)及服務(wù),本次實驗一共需要3臺服務(wù)器,一臺nginx做為負(fù)載均衡分發(fā)器和動靜分離的分發(fā)器,兩臺apache做為后端服務(wù)器,使用nginx實現(xiàn)兩臺apache服務(wù)器的負(fù)載均衡和動靜分離,需要的朋友可以參考下2023-03-03
Nginx安裝lua-nginx-module模塊的方法步驟
ngx_lua_module 是一個nginx http模塊,這篇文章主要介紹了Nginx安裝lua-nginx-module模塊的方法步驟,非常具有實用價值,需要的朋友可以參考下2018-12-12
Keepalived+Nginx雙機(jī)配置小結(jié)
本文主要介紹了Keepalived+Nginx雙機(jī)配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

