在LNMP(Linux, Nginx, MySQL, PHP)架構中,Nginx主要負責處理靜態文件和反向代理。處理靜態文件是Nginx的一大優勢,因為它非常高效。以下是Nginx處理靜態文件的幾個關鍵點:
配置靜態文件目錄:
在Nginx的配置文件中,你可以指定一個或多個目錄來存放靜態文件。通常,這些目錄位于網站的根目錄下,例如/var/www/html
。
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /static/ {
alias /var/www/static/;
}
}
在這個例子中,root
指令指定了網站的根目錄,而location /static/
塊則指定了一個專門用于存放靜態文件的目錄/var/www/static/
。
使用alias
指令:
alias
指令允許你為特定的URL路徑指定一個文件系統路徑。這在處理靜態文件時非常有用,因為它可以直接映射到文件系統中的目錄。
location /static/ {
alias /var/www/static/;
}
這意味著當用戶訪問http://example.com/static/image.png
時,Nginx會直接從/var/www/static/image.png
提供文件。
緩存靜態文件:
為了提高性能,你可以配置Nginx緩存靜態文件。這可以通過設置proxy_cache_path
和proxy_cache_valid
指令來實現。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
...
location /static/ {
alias /var/www/static/;
expires 30d;
add_header Cache-Control "public";
}
}
在這個例子中,proxy_cache_path
指令定義了一個緩存路徑,而expires
和add_header
指令則設置了緩存的有效期和HTTP頭。
處理不同類型的文件:
Nginx可以根據文件的擴展名來處理不同類型的文件。例如,你可以配置Nginx為.css
、.js
和.png
文件設置特定的MIME類型。
types {
text/css css;
application/javascript js;
image/png png;
}
安全性和權限:
確保Nginx進程有權限訪問靜態文件所在的目錄和文件。通常,你需要將靜態文件目錄的所有者設置為www-data
(或其他運行Nginx的用戶),并設置適當的權限。
sudo chown -R www-data:www-data /var/www/static
sudo chmod -R 755 /var/www/static
通過以上配置,Nginx可以高效地處理靜態文件,提高網站的性能和響應速度。