提供靜態內容 配置 NGINX 和 NGINX Plus 以提供靜態內容,使用類型特定的根目錄,檢查文件存在性,併進行性能優化。 本節介紹如何配置 NGINX 和 NGINX Plus 以提供靜態內容,如何定義搜索請求文件的路徑,如何設置索引文件,以及如何調整 NGINX 和 NGINX Plus ...
提供靜態內容
配置 NGINX 和 NGINX Plus 以提供靜態內容,使用類型特定的根目錄,檢查文件存在性,併進行性能優化。
本節介紹如何配置 NGINX 和 NGINX Plus 以提供靜態內容,如何定義搜索請求文件的路徑,如何設置索引文件,以及如何調整 NGINX 和 NGINX Plus 以及內核以實現最佳性能。
根目錄和索引文件
root 指令指定將用於搜索文件的根目錄。為了獲得請求文件的路徑,NGINX 將請求 URI 追加到 root 指令指定的路徑中。該指令可以放置在 http {}、server {} 或 location {} 上下文中的任何級別。在下麵的示例中,root 指令為虛擬伺服器定義了根目錄。它適用於所有未在 location {} 塊中明確重新定義根目錄的地方:
server {
root /www/data;
location / {
}
location /images/ {
}
location ~ \.(mp3|mp4) {
root /www/media;
}
}
在這裡,NGINX 在文件系統中的 /www/data/images/ 目錄中搜索以 /images/ 開頭的 URI。但是,如果 URI 以 .mp3 或 .mp4 擴展名結尾,NGINX 將在匹配的 location 塊中定義的 /www/media/ 目錄中搜索文件。
如果請求以斜杠結尾,則 NGINX 將其視為對目錄的請求,並嘗試在目錄中查找索引文件。index 指令定義了索引文件的名稱(預設值為 index.html)。繼續上面的示例,如果請求 URI 是 /images/some/path/,並且如果存在 /www/data/images/some/path/index.html,則 NGINX 將返回該文件。如果不存在,則 NGINX 預設返回 HTTP 404(未找到)。要配置 NGINX 返回自動生成的目錄列表,可以將 on 參數包含在 autoindex 指令中:
location /images/ {
autoindex on;
}
您可以在 index 指令中列出多個文件名。NGINX 按指定的順序搜索文件,並返回它找到的第一個文件。
location / {
index index.$geo.html index.htm index.html;
}
此處使用的 $geo 變數是通過 geo 指令設置的自定義變數。該變數的值取決於客戶端的 IP 地址。
要返回索引文件,NGINX 檢查其是否存在,然後進行內部重定向,將索引文件的名稱追加到基本 URI 中以獲取新的 URI。內部重定嚮導致對位置的新搜索,可能會進入另一個位置,如下麵的示例所示:
location / {
root /data;
index index.html index.php;
}
location ~ \.php {
fastcgi_pass localhost:8000;
#...
}
在這裡,如果請求中的 URI 是 /path/,並且 /data/path/index.html 不存在但 /data/path/index.php 存在,則對 /path/index.php 的內部重定向被映射到第二個位置。結果,請求被代理。
嘗試多個選項
try_files 指令可以用於檢查指定的文件或目錄是否存在;如果存在,則 NGINX 進行內部重定向,如果不存在,則返回指定的狀態碼。
例如,要檢查請求 URI 對應的文件是否存在,可以使用 try_files 指令和 $uri 變數,如下所示:
server {
root /www/data;
location /images/ {
try_files $uri /images/default.gif;
}
}
文件以 URI 的形式指定,使用當前位置或虛擬伺服器上下文中設置的 root 或 alias 指令進行處理。在這種情況下,如果原始 URI 對應的文件不存在,NGINX 將內部重定向到最後一個參數指定的 URI,並返回 /www/data/images/default.gif。
最後一個參數也可以是狀態碼(直接在等號之前)或位置的名稱。在以下示例中,如果 try_files 指令的參數都不能解析為現有文件或目錄,則返回 404 錯誤。
location / {
try_files $uri $uri/ $uri.html =404;
}
在下一個示例中,如果原始 URI 和附加的尾部斜杠的 URI 都不能解析為現有文件或目錄,則將請求重定向到命名位置,該位置將請求傳遞給代理伺服器。
location / {
try_files $uri $uri/ @backend;
}
location @backend {
proxy_pass http://backend.example.com;
}
要瞭解更多信息,請觀看“內容緩存”網路研討會,瞭解如何顯著提高網站的性能,並深入瞭解 NGINX 的緩存功能。
nginx 系列
Nginx-02-Nginx Ubuntu 安裝 + windows10 + WSL ubuntu 安裝 nginx 實戰筆記
Nginx-05-nginx 反向代理是什麼?windows 下如何配置使用 nginx
Nginx R31 doc 官方文檔-01-nginx 如何安裝
Nginx R31 doc-03-HTTP Load Balancing HTTP 負載均衡
Nginx R31 doc-04-HTTP Health Checks
Nginx R31 doc-06-Accepting the PROXY Protocol
Nginx R31 doc-08-Configuring NGINX and NGINX Plus as a Web Server 配置 NGINX 和 NGINX Plus 作為 Web 伺服器
Nginx R31 doc-09-Serving Static Content 靜態內容
Nginx R31 doc-10-NGINX Reverse Proxy 反向代理
Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮
Nginx R31 doc-12-NGINX SSL Termination 安全加密
Nginx R31 doc-13-Limiting Access to Proxied HTTP Resources 訪問限流
Nginx R31 doc-14-Dynamic Denylisting of IP Addresses 動態拒絕IP地址
Nginx R31 doc-15-Live Activity Monitoring 實時活動監控
Nginx R31 doc-18-High Availability Support for NGINX Plus in On-Premises Deployments
Nginx 實戰-01-nginx windows 安裝筆記
Nginx 實戰-02-nginx proxy_pass 服務代理訪問 使用筆記 ubuntu nodejs
Nginx 實戰-04-nginx 不同的地址訪問不同的服務
Nginx 實戰-05-nginx 反向代理實現功能變數名稱到指定的 ip