Debian 网站提速实战:Nginx、PHP-FPM、缓存与数据库配置一次讲清
Debian 如何提高网站速度|附配置文件
在生产环境中,Debian 是非常常见的服务器操作系统。它稳定、安全、软件生态成熟,非常适合部署 WordPress、Typecho、Laravel、ThinkPHP、Django、静态站点以及各类企业官网。不过,很多网站刚部署完成时速度并不理想,常见问题包括:首屏打开慢、静态资源加载慢、并发稍高就卡顿、PHP 响应时间长、数据库查询慢、图片体积过大等。
本文将以 Debian 11 / Debian 12 为基础,介绍一套较为通用的网站加速方案,并附上常用配置文件示例。无论你使用的是 Nginx + PHP-FPM,还是 Nginx 反向代理 Node.js、Java、Python 应用,都可以从中选取适合自己的优化项。
一、网站速度慢的常见原因
在优化之前,需要先明确网站慢通常不是单一原因造成的,而是多个环节共同影响。
常见瓶颈包括:
-
服务器配置不足
CPU、内存、磁盘 I/O、带宽不足都会导致访问慢。 -
Web 服务配置不合理
Nginx worker 数量、连接数、缓存策略、压缩配置不合适。 -
PHP-FPM 配置不合理
PHP 进程数过少会排队,过多又会耗尽内存。 -
数据库性能差
MySQL / MariaDB 没有缓存、索引不合理、慢查询过多。 -
静态资源未压缩
CSS、JS、HTML、图片未压缩,导致传输体积大。 -
没有浏览器缓存
每次访问都重新请求图片、CSS、JS,浪费带宽。 -
未启用 HTTP/2 或 HTTPS 配置不佳
现代浏览器对 HTTP/2 支持很好,可以显著改善多资源加载性能。 -
应用程序本身效率低
插件过多、模板复杂、接口设计不合理、没有页面缓存。
优化网站速度,需要从系统层、Web 服务层、语言运行环境、数据库、缓存、前端资源等多个方面入手。
二、升级系统并安装基础工具
首先更新 Debian 系统软件包:
sudo apt update
sudo apt upgrade -y
安装常用工具:
sudo apt install -y curl wget vim unzip htop net-tools lsof socat ca-certificates gnupg
如果你需要查看磁盘 I/O 和系统负载,也可以安装:
sudo apt install -y sysstat iotop iftop
查看服务器负载:
top
或使用更直观的:
htop
查看内存:
free -h
查看磁盘:
df -h
查看网络连接:
ss -antp
三、Nginx 加速配置
Nginx 是 Debian 上非常常用的高性能 Web 服务器。合理配置 Nginx 可以明显提升网站并发能力和静态资源响应速度。
安装 Nginx:
sudo apt install -y nginx
查看 Nginx 版本:
nginx -v
编辑主配置文件:
sudo vim /etc/nginx/nginx.conf
1. Nginx 主配置示例
下面是一份适合大多数中小型网站的基础优化配置:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 1000;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 50m;
client_body_buffer_size 128k;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_vary on;
gzip_proxied any;
gzip_disable "msie6";
gzip_types
text/plain
text/css
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
application/atom+xml
image/svg+xml
font/ttf
font/otf
application/vnd.ms-fontobject;
open_file_cache max=10000 inactive=60s;
open_file_cache_valid 120s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
配置说明:
worker_processes auto:自动根据 CPU 核心数设置进程数。worker_connections 4096:每个 worker 可处理的连接数。sendfile on:提升静态文件传输效率。tcp_nopush on:配合 sendfile,提高大文件传输效率。tcp_nodelay on:降低小包延迟。gzip on:启用 Gzip 压缩。open_file_cache:缓存文件句柄,减少磁盘访问。
修改后检查配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
四、站点配置文件优化
假设网站目录为:
/var/www/example.com
域名为:
example.com
创建站点配置:
sudo vim /etc/nginx/sites-available/example.com.conf
1. 静态站点配置示例
如果你的网站是纯 HTML、CSS、JS 静态网站,可以使用下面配置:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000, immutable";
access_log off;
}
location ~* \.(html)$ {
expires 10m;
add_header Cache-Control "public, max-age=600";
}
gzip_static on;
}
启用站点:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
五、Nginx + PHP-FPM 配置优化
如果你运行 WordPress、Typecho、Laravel、ThinkPHP 等 PHP 网站,需要安装 PHP-FPM。
以 Debian 12 为例:
sudo apt install -y php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-zip php-opcache
查看 PHP-FPM 版本:
php -v
假设 PHP 版本为 8.2,配置文件通常在:
/etc/php/8.2/fpm/php.ini
/etc/php/8.2/fpm/pool.d/www.conf
1. PHP 站点 Nginx 配置示例
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000, immutable";
access_log off;
try_files $uri =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 120s;
fastcgi_read_timeout 120s;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
location ~ /\. {
deny all;
}
}
检查并重载:
sudo nginx -t
sudo systemctl reload nginx
六、优化 PHP-FPM 进程池
编辑 PHP-FPM 池配置:
sudo vim /etc/php/8.2/fpm/pool.d/www.conf
找到以下内容进行调整:
[www]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 30
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 500
参数说明
pm = dynamic:动态管理 PHP 子进程,适合大多数站点。pm.max_children:最大 PHP 子进程数,决定 PHP 并发能力。pm.start_servers:启动时创建的进程数。pm.min_spare_servers:最小空闲进程数。pm.max_spare_servers:最大空闲进程数。pm.max_requests:每个进程处理多少请求后重启,有助于释放内存。
如何计算 pm.max_children?
可以用以下公式估算:
pm.max_children = 可用于 PHP 的内存 / 单个 PHP 进程平均内存
例如服务器有 2GB 内存,预留 700MB 给系统、Nginx、数据库,剩下 1300MB 给 PHP。单个 PHP 进程平均占用 50MB:
1300 / 50 = 26
因此 pm.max_children 可以设置为 25 左右。
修改完成后重启 PHP-FPM:
sudo systemctl restart php8.2-fpm
查看状态:
sudo systemctl status php8.2-fpm
七、开启 PHP OPcache
OPcache 可以缓存 PHP 字节码,减少 PHP 每次请求都重新解析脚本的开销,是 PHP 网站必开的优化项。
编辑配置:
sudo vim /etc/php/8.2/fpm/php.ini
加入或修改以下参数:
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.save_comments=1
opcache.fast_shutdown=1
如果是生产环境,代码不频繁更新,也可以设置:
opcache.revalidate_freq=300
修改后重启:
sudo systemctl restart php8.2-fpm
OPcache 对 WordPress、Laravel、Discuz、Typecho 等 PHP 程序都有明显提升。
八、启用 HTTPS 和 HTTP/2
HTTPS 不仅更安全,而且现代浏览器会对 HTTPS 连接启用更多优化特性。Nginx 在 HTTPS 下可以使用 HTTP/2,提高多资源加载效率。
安装 Certbot:
sudo apt install -y certbot python3-certbot-nginx
申请证书:
sudo certbot --nginx -d example.com -d www.example.com
证书申请完成后,可以将站点配置调整为:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000, immutable";
access_log off;
try_files $uri =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\. {
deny all;
}
}
检查自动续期:
sudo certbot renew --dry-run
九、启用 Brotli 或 Gzip 压缩
Gzip 已经能满足大部分场景。如果你追求更高压缩率,可以考虑 Brotli。Debian 默认仓库中的 Nginx 不一定自带 Brotli 模块,因此通用方案建议先启用 Gzip。
如果使用支持 Brotli 的 Nginx,可以增加:
brotli on;
brotli_comp_level 5;
brotli_min_length 1024;
brotli_types
text/plain
text/css
application/javascript
application/json
application/xml
image/svg+xml;
Gzip 与 Brotli 的区别:
- Gzip 兼容性最好,部署简单。
- Brotli 压缩率更高,尤其适合 CSS、JS、HTML。
- 对动态内容压缩等级不宜设置过高,否则会增加 CPU 压力。
一般建议:
- 动态压缩等级:4~6。
- 静态资源可在构建阶段预压缩。
- 图片、视频、压缩包不要重复压缩,收益很小。
十、配置浏览器缓存
浏览器缓存是网站加速中非常重要的一环。对于图片、字体、CSS、JS 等静态资源,应设置较长缓存时间。
Nginx 配置示例:
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000, immutable";
access_log off;
}
如果你的 CSS、JS 文件名带有版本号或 hash,例如:
app.8f3a2c.js
style.91ab2.css
可以设置更长缓存:
expires 365d;
add_header Cache-Control "public, max-age=31536000, immutable";
如果文件名不带版本号,不建议设置过长,否则更新后用户可能仍然加载旧文件。
十一、配置 FastCGI 缓存提升 PHP 页面速度
对于 WordPress、Typecho 等动态网站,FastCGI 缓存可以将动态页面缓存成静态结果,大幅减少 PHP 和数据库压力。
在 /etc/nginx/nginx.conf 的 http 块中加入:
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=PHP_CACHE:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
创建缓存目录:
sudo mkdir -p /var/cache/nginx/fastcgi
sudo chown -R www-data:www-data /var/cache/nginx
站点配置中加入:
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/wp-login.php|/cart|/checkout|/my-account") {
set $skip_cache 1;
}
if ($http_cookie ~* "wordpress_logged_in|comment_author|woocommerce_items_in_cart") {
set $skip_cache 1;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_cache PHP_CACHE;
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
然后测试:
sudo nginx -t
sudo systemctl reload nginx
访问网站后查看响应头,如果看到:
X-FastCGI-Cache: HIT
说明缓存命中。
需要注意:带登录状态、购物车、用户中心、后台页面不要缓存,否则可能出现用户数据混乱。
十二、MariaDB / MySQL 优化
很多动态网站慢,根源在数据库。安装 MariaDB:
sudo apt install -y mariadb-server
执行安全初始化:
sudo mysql_secure_installation
编辑配置文件:
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
1. MariaDB 基础优化配置
在 [mysqld] 下添加或修改:
[mysqld]
bind-address = 127.0.0.1
max_connections = 200
thread_cache_size = 64
table_open_cache = 2048
table_definition_cache = 1024
tmp_table_size = 64M
max_heap_table_size = 64M
innodb_buffer_pool_size = 512M
innodb_buffer_pool_instances = 1
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
配置说明:
innodb_buffer_pool_size:InnoDB 最重要参数,一般设置为可用内存的 40%~70%。max_connections:最大连接数,不要盲目设置过大。slow_query_log:开启慢查询日志,便于找出耗时 SQL。innodb_flush_log_at_trx_commit = 2:性能更好,但极端断电情况下可能丢失 1 秒事务,需根据业务选择。
重启 MariaDB:
sudo systemctl restart mariadb
查看慢查询日志:
sudo tail -f /var/log/mysql/slow.log
如果是小内存服务器,例如 1GB 内存,不建议将 innodb_buffer_pool_size 设置过大,可以设置为:
innodb_buffer_pool_size = 256M
如果是 4GB 内存服务器,数据库和 Web 在同一台机器上,可以考虑:
innodb_buffer_pool_size = 1G
十三、使用 Redis 缓存
Redis 常用于对象缓存、会话缓存、页面缓存队列等场景。对于 WordPress、Laravel 等程序,Redis 能有效降低数据库压力。
安装 Redis:
sudo apt install -y redis-server
编辑配置:
sudo vim /etc/redis/redis.conf
建议设置:
bind 127.0.0.1 ::1
protected-mode yes
supervised systemd
maxmemory 256mb
maxmemory-policy allkeys-lru
重启 Redis:
sudo systemctl restart redis-server
查看状态:
sudo systemctl status redis-server
测试:
redis-cli ping
返回:
PONG
说明 Redis 正常运行。
如果是 WordPress,可以安装 Redis Object Cache 插件,并在 wp-config.php 中加入:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_CACHE', true);
Laravel 项目则可以在 .env 中设置:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
十四、Debian 系统内核参数优化
系统级优化可以提升高并发场景下的连接处理能力。
编辑:
sudo vim /etc/sysctl.conf
添加以下内容:
fs.file-max = 1000000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_fastopen = 3
应用配置:
sudo sysctl -p
需要注意,内核参数不是越大越好。对于普通网站,上述配置已经足够。若服务器承载的是金融、交易、订单等关键业务,建议在测试环境充分验证后再上线。
十五、提高文件描述符限制
高并发连接需要足够的文件描述符。查看当前限制:
ulimit -n
编辑:
sudo vim /etc/security/limits.conf
添加:
www-data soft nofile 65535
www-data hard nofile 65535
root soft nofile 65535
root hard nofile 65535
为 Nginx 添加 systemd 限制:
sudo systemctl edit nginx
加入:
[Service]
LimitNOFILE=65535
为 PHP-FPM 添加:
sudo systemctl edit php8.2-fpm
加入:
[Service]
LimitNOFILE=65535
重新加载 systemd:
sudo systemctl daemon-reload
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
十六、图片与前端资源优化
服务器配置优化很重要,但前端资源优化同样关键。很多网站打开慢,不是服务器性能差,而是页面图片过大、JS 太多、第三方脚本太慢。
建议:
-
图片使用 WebP 格式
WebP 通常比 JPG、PNG 更小。 -
限制首屏图片大小
首页 Banner 不应动辄几 MB。 -
启用懒加载
非首屏图片滚动到可视区域再加载。 -
压缩 CSS 和 JS
使用构建工具压缩资源。 -
减少第三方脚本
统计、客服、广告、地图等第三方脚本可能严重拖慢页面。 -
使用 CDN
对全国或全球用户访问的网站,CDN 提升非常明显。
如果是静态资源较多的网站,推荐将图片、CSS、JS 放到对象存储 + CDN,例如阿里云 OSS、腾讯云 COS、七牛云、Cloudflare R2 等。
十七、启用 CDN 加速
CDN 的核心作用是让用户从离自己更近的节点获取静态资源,减少跨地区访问延迟。
适合使用 CDN 的内容:
- 图片
- CSS
- JS
- 字体文件
- 视频
- 下载文件
- 静态 HTML 页面
不建议随意缓存的内容:
- 用户后台
- 购物车
- 支付页面
- 会员中心
- 个性化接口
- 需要实时更新的数据接口
如果使用 Cloudflare,可以开启:
- Brotli
- HTTP/2
- HTTP/3
- Auto Minify
- Cache Rules
- TLS 1.3
- Early Hints
如果使用国内 CDN,需要确保域名已备案,并合理设置缓存规则。
十八、使用日志定位性能问题
优化不能只靠猜,日志分析非常重要。
查看 Nginx 访问日志:
sudo tail -f /var/log/nginx/access.log
查看错误日志:
sudo tail -f /var/log/nginx/error.log
查看 PHP-FPM 日志:
sudo journalctl -u php8.2-fpm -f
查看 Nginx 请求耗时,可以自定义日志格式。在 /etc/nginx/nginx.conf 的 http 块中加入:
log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'rt=$request_time uct=$upstream_connect_time '
'uht=$upstream_header_time urt=$upstream_response_time';
access_log /var/log/nginx/access.log main_ext;
重载:
sudo nginx -t
sudo systemctl reload nginx
这样可以通过日志看到请求总耗时和后端响应耗时。如果 request_time 很高,但 upstream_response_time 低,可能是网络或客户端问题;如果 upstream_response_time 高,通常说明 PHP、数据库或后端服务慢。
十九、常用检测命令
1. 测试网站响应头
curl -I https://example.com
重点查看:
cache-control
content-encoding
server
x-fastcgi-cache
2. 测试 HTTP/2
curl -I --http2 https://example.com
3. 查看 Nginx 连接
ss -antp | grep nginx
4. 查看 PHP-FPM 进程内存
ps -ylC php-fpm8.2 --sort:rss
或:
ps aux | grep php-fpm
5. 查看端口监听
sudo ss -lntp
6. 简单压力测试
安装 ApacheBench:
sudo apt install -y apache2-utils
测试:
ab -n 1000 -c 50 https://example.com/
参数说明:
-n 1000:总请求数 1000。-c 50:并发 50。
注意:不要对不属于自己的服务器做压力测试。
二十、推荐优化顺序
如果你不知道从哪里开始,可以按照下面顺序执行:
- 启用 HTTPS + HTTP/2
- 开启 Gzip 或 Brotli
- 配置静态资源浏览器缓存
- 启用 PHP OPcache
- 调整 PHP-FPM 进程数
- 优化 MariaDB / MySQL
- 启用 Redis 对象缓存
- 启用 FastCGI 页面缓存
- 压缩图片和前端资源
- 接入 CDN
- 分析日志与慢查询
- 根据实际流量调整系统参数
不要一开始就盲目修改大量系统参数。对于大多数网站,真正提升明显的通常是:缓存、压缩、图片优化、数据库优化和 CDN。
二十一、完整 Nginx + PHP-FPM 优化站点配置
下面给出一份可直接参考的完整配置,适合普通 PHP 网站使用。
文件路径:
/etc/nginx/sites-available/example.com.conf
配置内容:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
access_log /var/log/nginx/example.com.access.log main_ext;
error_log /var/log/nginx/example.com.error.log warn;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/wp-login.php|/admin|/user|/cart|/checkout") {
set $skip_cache 1;
}
if ($http_cookie ~* "wordpress_logged_in|comment_author|woocommerce_items_in_cart") {
set $skip_cache 1;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000, immutable";
access_log off;
try_files $uri =404;
}
location ~* \.(html)$ {
expires 10m;
add_header Cache-Control "public, max-age=600";
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 120s;
fastcgi_read_timeout 120s;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_cache PHP_CACHE;
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
location ~ /\. {
deny all;
}
}
启用:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
二十二、总结
在 Debian 上提高网站速度,并不是简单安装一个插件或修改一个参数就能彻底解决,而是需要从多个层面进行系统优化。
最值得优先做的优化包括:
- Nginx 开启 Gzip、HTTP/2、静态资源缓存;
- PHP 网站启用 OPcache;
- 合理调整 PHP-FPM 进程池;
- MariaDB / MySQL 设置合适的 InnoDB 缓存;
- 使用 Redis 缓存热点数据;
- 对动态页面启用 FastCGI 缓存;
- 压缩图片、减少 JS、优化前端资源;
- 接入 CDN,降低跨地区访问延迟;
- 使用日志和慢查询定位真正瓶颈。
对于中小型网站,一台 2 核 2GB 或 2 核 4GB 的 Debian 服务器,只要配置合理、缓存到位、图片不过大,完全可以支撑不错的访问量。真正的优化思路不是“把参数调到最大”,而是根据服务器资源、业务类型、访问量和日志数据,逐步调整并验证效果。