nginx配置報(bào)404問(wèn)題排查解決
前言
今天遇到一個(gè)問(wèn)題,問(wèn)題是這樣的,我們開(kāi)發(fā)了一個(gè)對(duì)接項(xiàng)目,我們會(huì)給對(duì)接方一個(gè)通知的url,以通知我們訂單的變更,但是我們給的通知url是線上的,測(cè)試環(huán)境的配置并沒(méi)有給對(duì)方,并且對(duì)方?jīng)]有測(cè)試環(huán)境,所以只能用線上測(cè)試。
我們代碼開(kāi)發(fā)完畢后,想測(cè)試通知接口,但想著通知他們把線上接口更改成測(cè)試環(huán)境,流程比較復(fù)雜,以后版本上線還得切換成線上環(huán)境,多此一舉。所以我們想到用nginx做反向代理。
由于我們線上環(huán)境nginx 配置比較復(fù)雜,我就簡(jiǎn)化寫(xiě)下當(dāng)時(shí)的nginx配置:
測(cè)試環(huán)境:
server {
listen 80;
server_name test.xxxxx.cn
location /notice {
include proxy.conf;
proxy_pass http://127.0.0.1:8899;
}
}生產(chǎn)環(huán)境:
server {
listen 80;
server_name www.xxxxx.cn
location /notice {
include proxy.conf;
proxy_pass http://test.xxxxx.cn;
}
}這樣我們?cè)谠L問(wèn)www.xxxxx.cn/notice 的時(shí)候一直報(bào)404,根據(jù)nginx訪問(wèn)日志查,我們看到生產(chǎn)環(huán)境域名的access.log 是有記錄,而且返回404,但測(cè)試環(huán)境域名的access.log并沒(méi)有日志。
一開(kāi)始我們以為是不是斜杠拼錯(cuò)了,排查了許久,但發(fā)現(xiàn)也不是,下篇我會(huì)再講一下nginx使用斜杠注意事項(xiàng)。
后面找了下架構(gòu)師,姜還是老的辣,才查出問(wèn)題出在哪里。
nginx將請(qǐng)求的標(biāo)頭字段"Host",也就是

藍(lán)色部分,以確定應(yīng)將請(qǐng)求路由到哪個(gè)服務(wù)器,如果它的值不匹配任何服務(wù)器名稱(chēng),或者請(qǐng)求根本不包含這個(gè)頭字段,那么 nginx 將把請(qǐng)求路由到這個(gè)端口的默認(rèn)服務(wù)器。
在上面的配置中訪問(wèn)www.xxxxx.cn/notice,請(qǐng)求到生產(chǎn)的時(shí)候,由于生產(chǎn)環(huán)境配置 server_name www.xxxxx.cn所以可以請(qǐng)求到,但是代理到test.xxxxx.cn時(shí)候因?yàn)檎?qǐng)求中的Host還是www.xxxxx.cn,所以在測(cè)試環(huán)境的nginx并沒(méi)有匹配到www.xxxxx.cn server_name,所以返回404。
那解決方案就是配置Host
生產(chǎn)環(huán)境:
server {
listen 80;
server_name www.xxxxx.cn
location /notice {
include proxy.conf;
proxy_set_header Host test.xxxxx.cn;
proxy_pass http://test.xxxxx.cn;
}
}具體文檔可以參考:
https://nginx.p2hp.com/en/docs/http/request_processing.html
好了,問(wèn)題就這樣結(jié)束了,關(guān)注我,下次分享更多的線上問(wèn)題以及解決方案。
總結(jié)
到此這篇關(guān)于nginx配置報(bào)404問(wèn)題排查解決的文章就介紹到這了,更多相關(guān)nginx配置404解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置SSL證書(shū)出現(xiàn)PEM_read_bio_PrivateKey() failed錯(cuò)誤解決
在配置GoDaddy的SSL證書(shū)并啟動(dòng)Nginx時(shí),可能遇到由于證書(shū)密鑰文件編碼問(wèn)題導(dǎo)致的啟動(dòng)失敗,具體表現(xiàn)為nginx報(bào)錯(cuò):PEM_read_bio_PrivateKey() failed,本文就來(lái)介紹一下,感興趣的可以了解學(xué)習(xí)2024-10-10
nginx通過(guò)https部署vue項(xiàng)目的完整步驟
在實(shí)際開(kāi)發(fā)中,我們會(huì)以https形式進(jìn)行頁(yè)面訪問(wèn),下面這篇文章主要給大家介紹了關(guān)于nginx通過(guò)https部署vue項(xiàng)目的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
基于Nginx實(shí)現(xiàn)灰度發(fā)布的詳細(xì)流程
灰度發(fā)布系統(tǒng)的核心是將用戶(hù)流量分成不同部分,一部分用戶(hù)使用新版本,而另一部分用戶(hù)繼續(xù)使用舊版本,其灰度發(fā)布通常是通過(guò) Nginx 實(shí)現(xiàn)的,所以本文給大家介紹了基于Nginx實(shí)現(xiàn)灰度發(fā)布的詳細(xì)流程,需要的朋友可以參考下2024-05-05
Nginx配置的rewrite編寫(xiě)時(shí)last與break的區(qū)別分析
這篇文章主要介紹了Nginx配置的rewrite編寫(xiě)時(shí)last與break的區(qū)別分析,簡(jiǎn)單來(lái)說(shuō)使用last會(huì)對(duì)server標(biāo)簽重新發(fā)起請(qǐng)求,而break就直接使用當(dāng)前的location中的數(shù)據(jù)源來(lái)訪問(wèn),需要的朋友可以參考下2016-01-01
詳解Nginx的超時(shí)keeplive_timeout配置步驟
Nginx 處理的每個(gè)請(qǐng)求均有相應(yīng)的超時(shí)設(shè)置,本文主要介紹了Nginx的超時(shí)keeplive_timeout配置步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
nginx的請(qǐng)求轉(zhuǎn)發(fā)配置過(guò)程
Nginx在Windows和Linux環(huán)境下的安裝、啟動(dòng)、停止、配置和請(qǐng)求轉(zhuǎn)發(fā)過(guò)程,配置文件語(yǔ)法檢測(cè)、優(yōu)雅關(guān)閉、熱部署和日志文件重新打開(kāi),配置多個(gè)服務(wù)的請(qǐng)求轉(zhuǎn)發(fā)規(guī)則,修改前端API地址,設(shè)置最大上傳文件大小2024-12-12
高性能WEB開(kāi)發(fā) nginx HTTP服務(wù)器篇
新產(chǎn)品為了效果,做的比較炫,用了很多的圖片和JS,所以前端的性能是很大的問(wèn)題,分篇記錄前端性能優(yōu)化的一些小經(jīng)驗(yàn)。2010-05-05

