使用nginx轉發服務出現靜態資源訪問404問題的原因與解決方法


項目上因為要集成第三方服務,因此需要使用nginx轉發服務地址來保證不會出現跨域問題。

location /yanggb/ {
    proxy_pass http://127.0.0.1:2333/;
}

但是通過以上配置之后,雖然能夠訪問到轉發后的地址,但是所有靜態資源文件的請求都報404錯誤,導致反向代理並沒有完全成功。

經過多次排查與反復嘗試,最終問題還是定位在nginx的路由配置上。具體是,出於nginx的路由路徑【/yanggb/】在路由匹配成功之后還會繼續往下尋找匹配規則(在上面的配置中找不到)以及在路徑中末尾【/】的原因,靜態資源的請求地址無法被nginx有效識別,直接導致反向代理失敗了,所有的二級地址都沒有被代理成功。

解決方法則是修改路由路徑的匹配規則(加上往下匹配的通配符【^~】)即可:

location ^~ /yanggb/ {
    proxy_pass http://127.0.0.1:2333/;
}

這樣,nginx就能正常代理靜態資源的訪問,不會出現404請求報錯了。

 

"大概人生里的很多事情都需要按時按量地去完成,不管是提前或是延后,都不妥當。"


免責聲明!

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



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