Nginx反向代理出現(xiàn)502?Bad?Gateway問題解決
?? 前言
前一陣子寫了一篇“關于解決調(diào)用百度翻譯API問題”的博客,近日在調(diào)用其他API時又遇到一些棘手的問題,于是寫下這篇博客作為記錄。
?? 問題描述
在代理的遇到過很多錯誤碼,其中出現(xiàn)頻率最高的就是502,說實話,當時我是在網(wǎng)上找了好久,也一直在問chatgpt,但是收效甚微,依然沒什么頭緒和進展。網(wǎng)上關于502錯誤碼的原因大致分為兩種:網(wǎng)絡問題和上游服務器的問題。
網(wǎng)絡問題我很快就排查完了,在終端中ping了幾個api的域名,都能ping通,也沒有包丟失,以我的認知來說,網(wǎng)絡連接是沒有問題的。
上游服務器問題,嗯,這個該怎么解決呢?我突然想到可以查看nginx錯誤日志(想到這里其實是非常慚愧的,竟然這么久才想到從這一點下手,太不專業(yè)了),于是發(fā)現(xiàn)這樣一段報錯:
(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ā)現(xiàn)了一些有用的東西,盡管問題場景可能跟我不一樣,但報錯幾乎一模一樣,里面的答主都給出了一個非常一致的回答,在代理中添加這么一句:
proxy_ssl_server_name on;
后來又去中文社區(qū)搜了一下,找了一段解釋,摘抄如下:
由于網(wǎng)站啟用了 SNI , Nginx反代默認沒有加入 SNI proxy_ssl_server_name on; ,Nginx 無法成功 handshake 上游的 SSL , 導致 502 Bad Gateway.
?? 新的問題
我將這條配置語句加入到我的配置文件中,重啟nginx,點擊代理地址,結果熟悉的502不見了,取而代之的是一個陌生的404頁面,為什么說陌生呢,有圖為證:
我覺得這很有可能說明配置起作用了,只不過又有新的問題亟待解決,我仔細審查了我的配置文件之后,感覺有一處可以改動,這在我之前那篇博客里面也提到過,但這次不是重定向問題,于是我抱著試一試的心態(tài)修改了此處配置,修改如下:
從:
proxy_set_header Host $host;
更改為
proxy_set_header Host findmyip.net
也就是將$host
替換成了具體的域名。
結果嘗試了一下,竟然真的成功了!此時此刻我的心情只能用欣喜若狂來形容。
?? 補充
在這之前,我還嘗試過其他解決方法,雖然沒有起到什么作用,但是也在這里記錄下來,作為補充,讀者看到了或許也能有所啟發(fā):
resolver 8.8.8.8; # Google DNS 服務器,作為域名解析 ssl_protocols TLSv1.2 TLSv1.3; # 指定TLS協(xié)議 proxy_ssl_verify off; # 禁用 SSL 證書驗證(如果需要) 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)驗來看,一般可以不用加 ’ / ’
差不多就這些。
到此這篇關于Nginx反向代理出現(xiàn)502 Bad Gateway問題解決的文章就介紹到這了,更多相關Nginx反向代理出現(xiàn)502內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
到此這篇關于Nginx反向代理出現(xiàn)502 Bad Gateway問題解決的文章就介紹到這了,更多相關Nginx反向代理出現(xiàn)502內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx中worker connections問題的解決方法
這篇文章主要介紹了Nginx中worker connections問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Nginx+Keepalive實現(xiàn)高可用負載均衡
在互聯(lián)網(wǎng)的高速發(fā)展下,網(wǎng)站的穩(wěn)定性與性能成為了企業(yè)核心競爭力之一,負載均衡作為提高網(wǎng)站可用性和處理能力的關鍵技術,被廣泛應用于互聯(lián)網(wǎng)架構中,本文將介紹如何利用 Nginx 的 Keepalive 功能來實現(xiàn)高可用的負載均衡策略,需要的朋友可以參考下2024-12-12詳解Nginx + Tomcat 反向代理 如何在高效的在一臺服務器部署多個站點
本篇文章主要介紹了詳解Nginx + Tomcat 反向代理 如何在高效的在一臺服務器部署多個站點,具有一定的參考價值,有興趣的可以了解一下。2016-12-12