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í)長(zhǎng)參數(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ì)等待多長(zhǎng)時(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)文章
SQL操作Pandas?DataFrame的三種方式示例詳解
這篇文章主要為大家介紹了SQL操作Pandas?DataFrame的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08排查Openresty獲取不到Host請(qǐng)求頭解決過程詳解
這篇文章主要為大家介紹了排查Openresty獲取不到Host請(qǐng)求頭解決過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Nginx漏洞整改實(shí)現(xiàn)限制IP訪問&隱藏nginx版本信息
本文主要介紹了Nginx漏洞整改實(shí)現(xiàn)限制IP訪問&隱藏nginx版本信息,通過配置Nginx的ACL,可以輕松實(shí)現(xiàn),下面就來具體介紹一下,感興趣的可以了解一下2024-03-03Nginx中報(bào)錯(cuò):Permission denied與Connection refused的解決
這篇文章主要給大家介紹了在Nginx中報(bào)錯(cuò):13: Permission denied與111: Connection refused的解決方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-04-04nginx主動(dòng)健康檢查功能實(shí)現(xiàn)
nginx_upstream_check_module是一個(gè)Nginx的第三方模塊,它可以實(shí)現(xiàn) Nginx的主動(dòng)健康檢查功能,本文將介紹一個(gè)基于 Nginx 的第三方模塊 nginx_upstream_check_module,它可以實(shí)現(xiàn) Nginx 的主動(dòng)健康檢查功能,可以幫助我們更加有效地管理后端服務(wù)器,需要的朋友可以參考下2023-05-05負(fù)載均衡下的webshell上傳+nginx解析漏洞的過程
這篇文章主要介紹了負(fù)載均衡下的webshell上傳+nginx解析漏洞,首先介紹了負(fù)載均衡下webshell上傳的四大難點(diǎn)及環(huán)境搭建教程,感興趣的朋友跟隨小編一起看看吧2024-02-02