nginx訪問返回504問題及解決
nginx訪問返回504
現(xiàn)象
nginx后端代理為報(bào)表服務(wù),錯(cuò)誤日志大量出現(xiàn)上游服務(wù)超時(shí),頁面訪問也會(huì)出現(xiàn)504返回,查看后發(fā)現(xiàn)服務(wù)本身沒問題,問題著重在nginx本身,報(bào)表服務(wù)本身屬于大查詢,返回較慢。
nginx默認(rèn)本身后端超時(shí)為60S,大查詢的返回大于60S所以會(huì)有幾率出現(xiàn)504請(qǐng)求失敗
報(bào)錯(cuò)
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í)長參數(shù)
| 參數(shù) | 詳解 |
|---|---|
| proxy_connect_timeout | 與后端/上游服務(wù)器建立連接的超時(shí)時(shí)間 |
| proxy_send_timeout | 與后端/上游服務(wù)器發(fā)送請(qǐng)求的超時(shí)時(shí)間 |
| proxy_read_timeout | 與后端/上游服務(wù)器讀取響應(yīng)的超時(shí)時(shí)間 |
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)超時(shí)解決思路
環(huán)境
前端:nginx作代理
后端:nginx+php(耳朵分發(fā)服務(wù))
問題:整套服務(wù)搭建完成之后,將打包好的ios包進(jìn)行上傳到分發(fā)服務(wù)器時(shí),包傳遞完畢之后頁面無法自動(dòng)跳轉(zhuǎn)

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

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

