關於nginx加載配置文件的巨坑


關於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 的配置文件

 

問題最終解決:

兩個方法(選其一即好):

方法一:調換兩個配置文件順序,可以不開www.conf 的掃描后台轉發

 

方法二:不調換順序,要開www.conf 的后台轉發配置
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM