前一篇文章,記錄了nginx中虛擬主機與請求分發,這一篇文件記錄Nginx中文件路徑的定義。
1.以root方式設置資源路徑
語法:root path;
默認:root html;
配置塊:http、server、location、if
如:
location /download/ {
root webhtml;
}
在這個配置中,如果你訪問/download/index/test.html,web服務器將會返回webhtml/download/index/test.html文件。
2)以alias方式設置資源路徑
語法:alias path;
配置:location
alias配置與root配置一樣,都是用來設置文件資源路徑的,不同的地方在於如何解讀location后面的url參數,這里用一個事例來記錄。如果一個請求的url為/conf/nginx.conf,這個對應的文件在服務器的us r/local/nginx/conf/nginx.conf,那我們使用root和alias應該如何來配置呢?
location conf { alias usr/local/nginx/conf/; root usr/local/nginx/; }
注:如果使用alias來指明路徑的話,需要添加上conf,才能發揮正確的數據,root的話,會主動將匹配到的url前綴添加到路徑中,所以不需要添加conf路徑。
3)訪問首頁
語法:index file;
默認:index index.html;
配置塊:http、server、location
一般情況下,直接訪問域名的話,都會訪問到網站的首頁,在Nginx中首頁是通過index參數來進行配置的,index后面可以跟多個文件參數,它會按順序找到第一個文件。
4)根據返回碼重定向頁面
語法:error_page code[code...][=|=answer-code]url|@named_location
配置塊:http、server、location、if
我們在訪問一些網站時,可以看到一些錯誤頁面,最常見的應該就是404了。在Nginx配置中,如果某一個請求返回錯誤嗎時,匹配上來error_page配置中的code,請求將會重定向到新的url中。
如:
error_page 404 404.html; error_page 502 503 50x.html; error_page 403 http://example.com/forbidden.html; error_page 404 = @fetch;
雖然重定向之后會返回指定的頁面,但是返回的http的錯誤碼還是與之前一致。可以通過如下方式來修改錯誤碼:
error_page 404 = 200 empty.gif; error_page 404 = 403 forbidden.gif;
也可以不指定返回碼,就是返回重定向后的實際情況。
error_page 404 = /empty.gif;
如果不想修改url,而是要交給了一個loaction處理的話,可以如下:
location / { error_page 404 @fallbak; } location @fallbak { proxy_pass http://xxx.xxx.xxx.xxx/backend }
5)是否可以遞歸使用error_page
語法:recursive_error_pages [on|off];
默認:recursive_error_pages off;
配置塊:http、location、server
6)try_files
語法:try_files path1[path2]uri;
配置塊:server、location
try_files后跟着若干個路徑,最后必須有uri參數。其作用是:按順序讀取每一個文件,將成功讀取到的第一個文件返回給用戶,結束請求。如果沒有找到一個可以有效讀取的文件,就將請求重定向到uri上。