在Ubuntu上配置LNMP缓存可通过Nginx代理缓存、PHP OPcache及MySQL缓冲池优化实现,步骤如下:
安装Nginx(若未安装)
sudo apt update && sudo apt install nginx
配置代理缓存
编辑Nginx配置文件(如/etc/nginx/nginx.conf或站点配置文件):
http {
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 / {
proxy_pass http://backend; # 替换为实际后端地址
proxy_cache my_cache;
proxy_cache_valid 200 302 10m; # 200/302状态码缓存10分钟
proxy_cache_valid 404 1m; # 404状态码缓存1分钟
add_header X-Proxy-Cache $upstream_cache_status; # 查看缓存状态
}
}
}
levels=1:2:缓存目录层级结构。max_size=1g:缓存最大占用1GB空间。inactive=60m:60分钟未访问则删除缓存。重启Nginx
sudo systemctl restart nginx
sudo apt install php-opcache # 适用于PHP 7.x/8.x
/etc/php/7.x/fpm/php.ini):[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 缓存大小(MB),根据服务器内存调整
opcache.max_accelerated_files=4000 # 缓存文件数量
opcache.revalidate_freq=60 # 每60秒检查脚本更新
sudo systemctl restart php7.x-fpm
配置InnoDB缓冲池
编辑MySQL配置文件(/etc/mysql/my.cnf):
[mysqld]
innodb_buffer_pool_size=1G # 建议设置为服务器内存的50%-70%
启用查询缓存(仅适用于MySQL 5.7及以下版本)
[mysqld]
query_cache_type=1
query_cache_size=64M
注意:MySQL 8.0已移除查询缓存,建议使用Redis替代。
重启MySQL
sudo systemctl restart mysql
X-Proxy-Cache字段,显示HIT表示缓存命中。<?php phpinfo(); ?>,搜索opcache确认配置生效。若需更强大的缓存(如会话存储、分布式缓存),可安装Redis:
sudo apt install redis-server php-redis
[redis]
extension=redis.so
redis.host=localhost
sudo systemctl restart redis-server php7.x-fpm
通过以上配置,可显著提升LNMP架构的性能,减少服务器负载。根据实际需求调整缓存参数(如缓存大小、有效期),并定期监控缓存命中率[1,3,4,5,6,7,8,12,13,14]。