nginx的try_files配置 - 訪問域名正常,訪問域名+路徑就報錯的問題

location / {
    root   /opt/atp/dist;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}

(以上配置,root是前端代碼存放的路徑,前后端分離)

今天遇到了一個問題,部署的應用test.zxj.com, 直接訪問域名可以跳轉(zhuǎn)到登錄頁(test.zxj.com/login),但是在登錄頁一點刷新頁面,或者直接在地址欄輸入test.zxj.com/login,就訪問不到。

問題的原因就是nginx的配置中沒有配try_files。

當用戶請求 http://test.zxj.com/example 時,這里的$uri就是/example
try_files 會到硬盤里嘗試找這個文件。如果存在名為/$root/example(其中$root是項目代碼安裝目錄)的文件,就直接把這個文件的內(nèi)容發(fā)送給用戶。
顯然,目錄中沒有叫 example 的文件。然后就看$uri/,增加了一個 /,也就是看有沒有名為/$root/example/的目錄。
又找不到,就會 fall back 到 try_files 的最后一個選項 /index.html,發(fā)起一個內(nèi)部 “子請求”,也就是相當于 nginx 發(fā)起一個 HTTP 請求到 http://test.zxj.com/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容