Nginx反向代理出現(xiàn)502?Bad?Gateway問題解決
?? 前言
前一陣子寫了一篇“關(guān)于解決調(diào)用百度翻譯API問題”的博客,近日在調(diào)用其他API時又遇到一些棘手的問題,于是寫下這篇博客作為記錄。
?? 問題描述
在代理的遇到過很多錯誤碼,其中出現(xiàn)頻率最高的就是502,說實(shí)話,當(dāng)時我是在網(wǎng)上找了好久,也一直在問chatgpt,但是收效甚微,依然沒什么頭緒和進(jìn)展。網(wǎng)上關(guān)于502錯誤碼的原因大致分為兩種:網(wǎng)絡(luò)問題和上游服務(wù)器的問題。
網(wǎng)絡(luò)問題我很快就排查完了,在終端中ping了幾個api的域名,都能ping通,也沒有包丟失,以我的認(rèn)知來說,網(wǎng)絡(luò)連接是沒有問題的。
上游服務(wù)器問題,嗯,這個該怎么解決呢?我突然想到可以查看nginx錯誤日志(想到這里其實(shí)是非常慚愧的,竟然這么久才想到從這一點(diǎn)下手,太不專業(yè)了),于是發(fā)現(xiàn)這樣一段報(bào)錯:
(SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 127.0.0.1, server: uapis.cn
于是我將這段日志前面加上一個nginx,即:
nginx (SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 127.0.0.1, server: uapis.cn
然后直接放在Google里面搜索,第一條就是stack overflow的回復(fù)帖子,點(diǎn)進(jìn)去看了一下,還真被我發(fā)現(xiàn)了一些有用的東西,盡管問題場景可能跟我不一樣,但報(bào)錯幾乎一模一樣,里面的答主都給出了一個非常一致的回答,在代理中添加這么一句:
proxy_ssl_server_name on;
后來又去中文社區(qū)搜了一下,找了一段解釋,摘抄如下:
由于網(wǎng)站啟用了 SNI , Nginx反代默認(rèn)沒有加入 SNI proxy_ssl_server_name on; ,Nginx 無法成功 handshake 上游的 SSL , 導(dǎo)致 502 Bad Gateway.
?? 新的問題
我將這條配置語句加入到我的配置文件中,重啟nginx,點(diǎn)擊代理地址,結(jié)果熟悉的502不見了,取而代之的是一個陌生的404頁面,為什么說陌生呢,有圖為證:

我覺得這很有可能說明配置起作用了,只不過又有新的問題亟待解決,我仔細(xì)審查了我的配置文件之后,感覺有一處可以改動,這在我之前那篇博客里面也提到過,但這次不是重定向問題,于是我抱著試一試的心態(tài)修改了此處配置,修改如下:
從:
proxy_set_header Host $host;
更改為
proxy_set_header Host findmyip.net
也就是將$host替換成了具體的域名。
結(jié)果嘗試了一下,竟然真的成功了!此時此刻我的心情只能用欣喜若狂來形容。
?? 補(bǔ)充
在這之前,我還嘗試過其他解決方法,雖然沒有起到什么作用,但是也在這里記錄下來,作為補(bǔ)充,讀者看到了或許也能有所啟發(fā):
resolver 8.8.8.8; # Google DNS 服務(wù)器,作為域名解析
ssl_protocols TLSv1.2 TLSv1.3; # 指定TLS協(xié)議
proxy_ssl_verify off; # 禁用 SSL 證書驗(yàn)證(如果需要)
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods “GET, POST, OPTIONS”;
add_header Access-Control-Allow-Headers “Authorization,Content-Type”;
return 204;
} #處理option請求
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;server_name和端口號
’ / ’ 問題,比如location /getpic和location /getpic/ 、以及 proxy_pass https://example.com 和 proxy_pass https://example.com/是不一樣的,以我目前的經(jīng)驗(yàn)來看,一般可以不用加 ’ / ’
差不多就這些。
到此這篇關(guān)于Nginx反向代理出現(xiàn)502 Bad Gateway問題解決的文章就介紹到這了,更多相關(guān)Nginx反向代理出現(xiàn)502內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
到此這篇關(guān)于Nginx反向代理出現(xiàn)502 Bad Gateway問題解決的文章就介紹到這了,更多相關(guān)Nginx反向代理出現(xiàn)502內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx設(shè)置連接超時并進(jìn)行測試的方法步驟
在高并發(fā)場景下,如果客戶端與服務(wù)器的連接長時間未響應(yīng),會占用大量的系統(tǒng)資源,影響其他正常請求的處理效率,為了解決這個問題,可以通過設(shè)置?Nginx?的連接超時時間來優(yōu)化資源管理,提高服務(wù)器的穩(wěn)定性,以下是具體的配置方法和測試步驟,希望對你有所幫助2025-02-02
HTTP 499 狀態(tài)碼 nginx下 499錯誤的解決辦法
HTTP狀態(tài)碼出現(xiàn)499錯誤有多種情況,499錯誤是什么?Nginx 499錯誤的原因及解決方法,下面跟著腳本之家小編一起學(xué)習(xí)吧2016-06-06
Nginx錯誤攔截轉(zhuǎn)發(fā) error_page的問題解決
Nginx通過配置錯誤頁面和請求處理機(jī)制,可以在請求失敗時展示自定義錯誤頁面,提升用戶體驗(yàn),下面就來介紹一下Nginx錯誤攔截轉(zhuǎn)發(fā) error_page的問題解決2025-12-12
nginx開啟https配置之后網(wǎng)頁無法訪問的問題處理解決
最近新購服務(wù)器部署nginx之后按照之前的方式部署前端項(xiàng)目并配置https之后訪問頁面無法顯示,本文主要介紹了nginx開啟https配置之后網(wǎng)頁無法訪問的問題處理解決,具有一定的參考價值,感興趣的可以了解一下2023-11-11
使用Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡的全過程
很多用到nginx的地方都是作為靜態(tài)伺服器,這樣可以方便緩存那些靜態(tài)文件,比如CSS,JS,html,htm等文件,下面這篇文章主要給大家介紹了關(guān)于使用Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡的相關(guān)資料,需要的朋友可以參考下2022-05-05
Nginx+FastDFS搭建圖片服務(wù)器的方法實(shí)現(xiàn)
這篇文章主要介紹了Nginx+FastDFS搭建圖片服務(wù)器的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Nginx修改默認(rèn)80端口(解決跟Tomcat的端口沖突)
本文主要介紹了Nginx修改默認(rèn)80端口(解決跟Tomcat的端口沖突),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

