關於nginx加載配置文件的巨坑
一、巨坑問題引入
今早前端開發又來追我一個問題,上月底29日問過(還以為他忘記了這事,或者這問題自己把自己給搞好了)。說是他本地調用線上系統的登錄接口,一直轉圈登不上。還一再給我強調要是登不上,調試線上環境的問題調不了(說有些賬號正式環境才有,我就說你可以直接到測試環境數據庫插入你想登的賬號密碼呀 = =)

然后瀏覽器打開正式環境的登錄接口,返回400,nginx我是從來沒有見過返回400的狀態碼的,當然我自己也沒有定義過,沒事搞這玩意干嘛

再看看nginx日志:

當時逼着我查這玩意,感覺很崩潰,嚴重超出能力范圍,也無從下手。今天又逼着我弄,真是把我逼入絕境。前運維,開發朋友都問了一輪,無果,自己也無果。
前運維倒是叫我問拿一下開發本地轉發的nginx配置文件,看看是不是寫錯了。還真的寫錯,不過改回來也是不行的。
。。。 server { listen 80; server_name 127.0.0.1; 。。。 location / { index login.html index.htm; } location /后端項目名/ { #后端地址+端口(這個是他加的注釋) proxy_pass https://域名/線上后台目錄/rexxxe/sexxxty_login/new; 。。。 } }
第一眼看,覺得轉發怪怪的,以往不是proxy_pass某個地址就好了么,為啥是接口地址的。然后改過來,變成:
proxy_pass https://域名/線上后台目錄/;
瀏覽器報錯還是那樣:400。然后叫他重新在本地跑他的nginx,我實時看下nginx和后台日志,一條日志記錄都木有!!!!
然后只能求助公司那位中級后端開發 = =(公司跟我最好的開發同事,算半個運維吧)
二、巨坑問題解決過程
開發嘗試把轉發地址改到微信后台,也調不成功。然后這偉大的任務交給他處理了,他去看nginx配置文件(當然我也是看了一只一只看了一輪的,沒有什么異樣)
終於把我拯救起來了。說是nginx有個配置文件,也是轉發到后台目錄的,后台轉發沒開。順序原來是箭頭這樣的

先簡單說下這兩個配置文件的區別:
假設根域名是:ljy.com
(1)www.conf :
【i】 server_name 寫的是:server_name ljy.com www.ljy.com;
【ii】 關了頁面登錄后台轉發(因為他們說這個域名是沒用的,我就注釋了后台轉發部分,以免自己搞混自己。話說線上配置文件也真是亂七八糟的,很多個域名,轉發相同的應用,我也搞不清楚是不是這些域名都用到,又不敢亂關)

(2)yjxxx.conf
【i】 server_name 寫的是: server_name yjxxx.ljy.com;
【ii】 開了頁面登錄后台轉發
賊坑爹的事來了:
開發本地nginx 寫的server_name 127.0.0.1; 竟然默認調的是www.conf的后台轉發,因為我注釋了這段,所以調不成功,后台就報錯了。
而且還有個nginx加載配置文件的先后順序,默認優先調用www.conf 再調 yjxxx.conf 的配置文件
問題最終解決:
兩個方法(選其一即好):
