Nginx捕獲并自定義proxy_pass返回的錯(cuò)誤問(wèn)題
Nginx捕獲并自定義proxy_pass返回錯(cuò)誤
需求
實(shí)際情況:
后端圖片存儲(chǔ)服務(wù)對(duì)接華為存儲(chǔ),把數(shù)據(jù)寫(xiě)在華為上。
上級(jí)會(huì)不定時(shí)的對(duì)圖片進(jìn)行抽查考核,要求5s內(nèi)必須返回?cái)?shù)據(jù),但是圖片服務(wù)不定時(shí)會(huì)掛掉,由于代碼年代久遠(yuǎn)已無(wú)人維護(hù),只好在圖片服務(wù)前端再部署個(gè)nginx,通過(guò)proxy_pass代理后端服務(wù),當(dāng)后端返回404或5xx錯(cuò)誤時(shí),對(duì)proxy_pass進(jìn)行捕獲,實(shí)現(xiàn)自定義輸出。
解決方法
upstream DGIMediaServer {
server 172.24.49.xxx:6551 fail_timeout=3s;
}
server {
listen 8888;
server_name _;
root html;
sent_timeout 5s;
#將下面幾個(gè)錯(cuò)誤碼跳轉(zhuǎn)到/200.jpg
error_page 404 500 502 =200 /200.jpg;
location = /200.jpg {
root html;
}
location / {
#使用自定義捕獲,不開(kāi)啟則無(wú)法捕獲proxy_pass的錯(cuò)誤
proxy_intercept_errors on;
#連接服務(wù)器超時(shí)設(shè)置
proxy_connect_timeout 3s;
#發(fā)送數(shù)據(jù)超時(shí)設(shè)置
proxy_send_timeout 3s;
#返回?cái)?shù)據(jù)超時(shí)設(shè)置
proxy_read_timeout 3s;
#自定義錯(cuò)誤處理
error_page 404 500 502 503 504=200 /200.jpg;
}
index index.html index.php;
charset UTF-8;
}
Nginx的proxy_pass、root、alias的說(shuō)明
代理配置
1、root
root配置代理路徑時(shí),會(huì)在代理的地址后拼接配置字段:
location /static {
root static/image;
}在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip:port/static/static/image/*.*
2、alias(只能用于location)
alias配置代理路徑時(shí),直接替換代理地址:
location /static {
alias static/image;
}在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip:port/static/image/*.*
3、proxy_pass
proxy_pass配置代理路徑時(shí),直接替換整個(gè)代理路徑,包括ip地址的端口等:
location /static {
proxy_pass http://ip_two:port_two/static;
}在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip_two:port_two/static/static/*.*
- 代理路徑后不帶斜杠時(shí),配置路徑會(huì)替代原本的ip和端口等,并拼接代理地址。
- 代理路徑后帶斜杠時(shí),配置路徑會(huì)替代原本的ip和端口等,不拼接代理地址。
location /static/ {
proxy_pass http://ip_two:port_two/abc/;
}在訪問(wèn)http://ip:port/static/*.*時(shí)會(huì)映射到http://ip_two:port_two/abc/*.*
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Nginx中l(wèi)ocation proxy_pass加與不加/的區(qū)別說(shuō)明
- Nginx?location和proxy_pass配置示例詳解
- Nginx中proxy_pass的斜杠的兩種方式
- Nginx的location路徑與proxy_pass匹配規(guī)則說(shuō)明
- nginx中如何配置proxy_pass
- Nginx rewrite和proxy_pass的區(qū)別及說(shuō)明
- Nginx proxy_pass如何到https后端
- nginx代理參數(shù)proxy_pass的實(shí)現(xiàn)
- nginx反向代理proxy_pass遇到的死循環(huán)問(wèn)題
- 解決nginx配置proxy_pass之后,響應(yīng)變慢的問(wèn)題
- Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式
- Nginx中proxy_pass使用小結(jié)
相關(guān)文章
Nginx開(kāi)啟Brotli壓縮算法實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Nginx開(kāi)啟Brotli壓縮算法實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Apache Nginx 禁止目錄執(zhí)行PHP腳本文件的方法
這篇文章主要介紹了Apache Nginx 禁止目錄執(zhí)行PHP腳本文件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
shell腳本定時(shí)統(tǒng)計(jì)Nginx下access.log的PV并發(fā)送給API保存到數(shù)據(jù)庫(kù)
這篇文章主要介紹了shell腳本定時(shí)統(tǒng)計(jì)Nginx下access.log的PV并發(fā)送給API保存到數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
詳解Nginx靜態(tài)服務(wù)配置(root和alias指令)
這篇文章主要介紹了詳解Nginx靜態(tài)服務(wù)配置(root和alias指令),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)
本文主要介紹了Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Windows系統(tǒng)下安裝及部署Nginx詳細(xì)教程(含多個(gè)站點(diǎn)部署)
Nginx是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),也是一種輕量級(jí)的Web服務(wù)器,可以作為獨(dú)立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下安裝及部署Nginx(含多個(gè)站點(diǎn)部署)的相關(guān)資料,需要的朋友可以參考下2024-01-01

