2013-10-04 54 views
0

我正在嘗試將GET /重寫爲/srv/app/static/index.html。我密切與這幾個指令:nginx如何在位置塊中構造文件路徑?

root /srv/app/static; 
location /static { 
    alias /srv/app/static; 
} 
location =/{ 
    alias /srv/app/static/index.html; 
} 

所以,當我GET /static,nginx的服務於/srv/app/static/index.html文件,我很高興。

但是,當我GET /,nginx返回404.檢查日誌,我看到它試圖訪問文件/srv/app/static/index.htmlindex.html(原文如此)。爲什麼它會在alias中給出的路徑上添加額外的index.html

如果我改變指令

location =/{ 
    index index.html; 
    alias /srv/app/static/; 
} 

錯誤日誌顯示它試圖訪問/srv/app/stati(原文如此,它會從/srv/app/static最終c字符這是怎麼回事

編輯:?

我可以得到我想要的行爲使用rewrite像這樣:

location =/{ 
    rewrite (.*) /static/index.html; 
} 

但是,我認爲alias是更高性能和慣用。

回答

0

由於您已經設置了root,因此不需要alias

你可以實現只用

location =/{ 
    index index.html; 
} 

至於你的搞笑問題上有着相同的結果,看看documentation提到

基本上,這意味着,

location =/{ 
    alias /srv/app/static/index.html; 
} 

訪問/實際上試圖訪問/srv/app/static/index.html作爲一個可怕的ctory。我假設nginx附加一個index.html作爲全球nginx.conf的一部分。

至於你在錯誤日誌中獲得/srv/app/stati,我不確定發生了什麼事情。也許你可以粘貼完整的日誌條目?

相關問題