nginx配置報(bào)404問題排查解決
前言
今天遇到一個(gè)問題,問題是這樣的,我們開發(fā)了一個(gè)對(duì)接項(xiàng)目,我們會(huì)給對(duì)接方一個(gè)通知的url,以通知我們訂單的變更,但是我們給的通知url是線上的,測(cè)試環(huán)境的配置并沒有給對(duì)方,并且對(duì)方?jīng)]有測(cè)試環(huán)境,所以只能用線上測(cè)試。
我們代碼開發(fā)完畢后,想測(cè)試通知接口,但想著通知他們把線上接口更改成測(cè)試環(huán)境,流程比較復(fù)雜,以后版本上線還得切換成線上環(huán)境,多此一舉。所以我們想到用nginx做反向代理。
由于我們線上環(huán)境nginx 配置比較復(fù)雜,我就簡(jiǎn)化寫下當(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問www.xxxxx.cn/notice 的時(shí)候一直報(bào)404,根據(jù)nginx訪問日志查,我們看到生產(chǎn)環(huán)境域名的access.log 是有記錄,而且返回404,但測(cè)試環(huán)境域名的access.log并沒有日志。
一開始我們以為是不是斜杠拼錯(cuò)了,排查了許久,但發(fā)現(xiàn)也不是,下篇我會(huì)再講一下nginx使用斜杠注意事項(xiàng)。
后面找了下架構(gòu)師,姜還是老的辣,才查出問題出在哪里。
nginx將請(qǐng)求的標(biāo)頭字段"Host",也就是
藍(lán)色部分,以確定應(yīng)將請(qǐng)求路由到哪個(gè)服務(wù)器,如果它的值不匹配任何服務(wù)器名稱,或者請(qǐng)求根本不包含這個(gè)頭字段,那么 nginx 將把請(qǐng)求路由到這個(gè)端口的默認(rèn)服務(wù)器。
在上面的配置中訪問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并沒有匹配到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
好了,問題就這樣結(jié)束了,關(guān)注我,下次分享更多的線上問題以及解決方案。
總結(jié)
到此這篇關(guān)于nginx配置報(bào)404問題排查解決的文章就介紹到這了,更多相關(guān)nginx配置404解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx安裝lua-nginx-module模塊的方法步驟
ngx_lua_module 是一個(gè)nginx http模塊,這篇文章主要介紹了Nginx安裝lua-nginx-module模塊的方法步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-12-12Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問題解決
這篇文章主要介紹了Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問題解決,Cashe配置最主要的還是需要注意內(nèi)存資源的使用問題,需要的朋友可以參考下2016-01-01利用nginx+lua+redis實(shí)現(xiàn)反向代理方法教程
這篇文章主要給大家介紹了利用nginx+lua+redis實(shí)現(xiàn)反向代理方法教程,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05Nginx下支持Thinkphp URL Rewrite的配置示例
這篇文章主要介紹了Nginx下支持Thinkphp URL Rewrite的配置示例,本文直接給出配置示例,需要的朋友可以參考下2015-07-07nginx could not build the server_names_hash 解決方法
服務(wù)器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。2011-03-03Nginx?502?Bad?Gateway錯(cuò)誤解決詳細(xì)指南與實(shí)例
這篇文章主要介紹了Nginx?502?Bad?Gateway錯(cuò)誤解決的相關(guān)資料,502BadGateway錯(cuò)誤是Web開發(fā)和運(yùn)維中常見的錯(cuò)誤,表示一個(gè)服務(wù)器在充當(dāng)網(wǎng)關(guān)或代理時(shí),從上游服務(wù)器收到了一個(gè)無(wú)效的響應(yīng),需要的朋友可以參考下2024-11-11