項目上因為要集成第三方服務,因此需要使用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請求報錯了。
"大概人生里的很多事情都需要按時按量地去完成,不管是提前或是延后,都不妥當。"