动静分离是一种常见的网站优化策略,通过将静态资源(如图片、CSS、JavaScript文件)和动态内容(如PHP、Java等处理生成的页面)分开处理,可以提高网站的性能和响应速度。Nginx 是一个非常强大的反向代理服务器,可以很好地实现动静分离。以下是一个基本的配置示例:
安装 Nginx: 如果你还没有安装 Nginx,可以参考官方文档进行安装。例如,在 Ubuntu 上可以使用以下命令安装:
sudo apt update
sudo apt install nginx
配置 Nginx:
编辑 Nginx 的配置文件,通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default。以下是一个示例配置:
server {
listen 80;
server_name example.com;
# 静态资源配置
location /static/ {
alias /var/www/static/;
expires 30d;
add_header Cache-Control "public";
}
# 动态资源配置
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
在这个配置中:
location /static/ 块用于处理静态资源请求。alias 指令将 /static/ URL 映射到文件系统中的 /var/www/static/ 目录。expires 和 add_header 指令用于设置缓存头,以便浏览器可以缓存这些静态资源。location / 块用于处理动态内容请求。proxy_pass 指令将请求转发到后端服务器(例如,一个运行 PHP 的服务器)。重启 Nginx: 保存配置文件后,重启 Nginx 以应用更改:
sudo systemctl restart nginx
通过这种方式,Nginx 可以高效地处理静态资源请求,同时将动态内容请求转发到后端服务器,从而实现动静分离。
location 块:你可以根据需要为不同的静态资源类型(如图片、CSS、JavaScript)创建单独的 location 块,并设置不同的缓存策略。try_files 指令:在处理动态内容时,可以使用 try_files 指令来检查文件是否存在,如果不存在则转发到后端服务器。fastcgi_cache:对于动态内容,可以使用 Nginx 的 FastCGI 缓存功能来进一步提高性能。以下是一个更复杂的示例,展示了如何使用 try_files 和 fastcgi_cache:
server {
listen 80;
server_name example.com;
# 静态资源配置
location /static/ {
alias /var/www/static/;
expires 30d;
add_header Cache-Control "public";
}
# 动态资源配置
location / {
try_files $uri $uri/ @backend;
}
location @backend {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_cache my_cache;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
}
}
在这个示例中,try_files 指令首先检查请求的文件是否存在,如果不存在则将请求转发到 @backend 位置块,该位置块使用 FastCGI 将请求传递给 PHP-FPM 处理,并启用缓存以提高性能。