LNMP 中 Nginx 如何设置:从虚拟主机到 PHP-FPM 联动的完整梳理
时间:2026-08-24 | 作者:冻月看渠 | 阅读:0在LNMP(Linux+Nginx+MySQL+PHP)这套经典架构里,Nginx扮演的角色可以说是承上启下的关键——它既要处理海量的HTTP请求,又要负责把PHP相关的请求精准地转发给PHP-FPM,同时还得高效地提供静态文件服务。可以说,Nginx配得好,整个Web服务的性能就稳了一大半。下面就来复盘一下,Nginx在LNMP环境里究竟该怎么配置,以及每一步背后需要注意什么。
1. 安装Nginx
不同Linux发行版的安装命令略有差异,但本质都一样。Debian/Ubuntu系用apt,CentOS/RHEL系则用yum。
- Debian/Ubuntu:
sudo apt update && sudo apt install nginx -y - CentOS/RHEL:
sudo yum install epel-release && sudo yum install nginx -y
安装完成后,启动服务并设置开机自启是基本操作:
sudo systemctl start nginx
sudo systemctl enable nginx
最后,直接访问服务器IP地址,如果能正常看到Nginx的默认欢迎页面,说明安装和启动已经成功了。
2. 配置Nginx虚拟主机(核心步骤)
虚拟主机是为了让一台服务器能够同时托管多个域名或网站。Nginx通过sites-a vailable和sites-enabled这两个目录来管理——前者存放所有配置文件的“草稿”,后者则通过符号链接的方式,决定哪些配置真正生效。
(1)创建虚拟主机配置文件
假设我们要为域名example.com配置网站,首先创建配置文件:
sudo nano /etc/nginx/sites-a vailable/example.com
然后写入以下基础配置,当然,具体参数需要根据实际情况调整:
server {
listen 80;
server_name example.com www.example.com; # 域名,多个用空格分隔
root /var/www/example.com; # 网站根目录,需手动创建
index index.php index.html index.htm; # 默认索引文件
# 静态文件处理:尝试匹配文件,不存在则返回404
location / {
try_files $uri $uri/ =404;
}
# PHP处理:转发至PHP-FPM(关键配置)
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # PHP-FPM socket路径,需与版本匹配
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问.htaccess等敏感文件
location ~ /.ht {
deny all;
}
}
这里有几个关键点需要特别留意:server_name必须与域名解析记录一致,并且需要提前在DNS服务商那里把域名指向服务器IP;root路径下的文件,Nginx用户(通常是www-data)必须拥有读写权限;至于fastcgi_pass里的socket路径,可以通过sudo find / -name "*.sock"来查找确认。
(2)启用虚拟主机
创建符号链接,将配置文件链接到sites-enabled目录:
sudo ln -s /etc/nginx/sites-a vailable/example.com /etc/nginx/sites-enabled/
(3)测试并重载配置
修改完配置后,一定要先测试语法是否正确:
sudo nginx -t
如果显示syntax is ok,就可以放心重载Nginx了:
sudo systemctl reload nginx
3. 配置PHP-FPM联动
Nginx本身不处理PHP代码,它只负责把PHP请求转交给PHP-FPM这个“幕后英雄”。所以,PHP-FPM的配置至关重要。
(1)安装PHP-FPM及扩展
- Debian/Ubuntu:
sudo apt install php-fpm php-mysql -y - CentOS/RHEL:
sudo yum install php php-fpm php-mysqlnd -y
(2)调整PHP-FPM配置
编辑PHP-FPM的pool配置文件,通常位于/etc/php/8.2/fpm/pool.d/www.conf:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
找到listen指令,确保它和Nginx配置中的fastcgi_pass路径完全一致,否则两者无法“对上话”。
(3)重启PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl enable php8.2-fpm
4. 配置MySQL数据库
对于像WordPress、Lara vel这样的动态应用,Nginx还需要连接MySQL来存储和读取数据。
(1)安装MySQL
- Debian/Ubuntu:
sudo apt install mysql-server -y - CentOS/RHEL:
sudo yum install mariadb-server -y
(2)运行安全脚本
sudo mysql_secure_installation
这个脚本会引导你设置root密码、移除匿名用户、禁止root远程登录等,是保证数据库安全的第一步。
(3)创建数据库及用户
登录MySQL:
sudo mysql -u root -p
然后执行以下SQL命令:
CREATE DATABASE example_db; -- 创建数据库
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; -- 创建用户
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost'; -- 授权
FLUSH PRIVILEGES; -- 刷新权限
EXIT;
5. 关键优化与安全配置
基础配置完成后,还有几项优化与安全措施值得做。
(1)设置防火墙
以UFW为例,允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full'
sudo ufw enable
(2)配置HTTPS(可选但推荐)
使用Let’s Encrypt免费获取SSL证书,是目前最便捷的方式:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
按照提示操作,Certbot会自动完成证书安装,并重写Nginx配置实现HTTPS重定向。
(3)性能优化
- 启用Gzip压缩:在
http块中添加:gzip on; gzip_types text/plain text/css application/json application/ja vascript text/xml application/xml application/xml+rss text/ja vascript; - 静态文件缓存:在
location块中添加:location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; } - 调整worker进程:在
nginx.conf的events块中,合理设置worker_connections(通常设为1024,具体根据服务器内存调整)。
6. 验证配置
配置完成后,务必进行验证:
- 静态网站:在
/var/www/example.com目录下放置一个index.html,访问http://example.com,如果页面正常显示,说明静态文件服务没问题。 - PHP动态网站:在相同目录下创建
info.php,内容为,访问http://example.com/info.php,如果能看到PHP信息页面,说明PHP-FPM联动生效。
至此,LNMP环境中Nginx的基础配置就告一段落了。当然,这只是一个起点——根据实际业务需求,你还可以进一步调整缓存策略、配置负载均衡、甚至搭建反向袋里。Nginx的灵活性和高性能,值得持续探索。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Linux服务器安装配置vsftpd完整教程
- 时间:2026-08-31
-
- Linux下使用Perl编写HelloWorld完整教程
- 时间:2026-08-27
-
- Linux系统中Rust的跨平台兼容性深度解析
- 时间:2026-08-27
-
- Rust在Linux容器化技术中的应用:从极简运行时到内核安全
- 时间:2026-08-27
-
- Linux下Rust并发处理:安全与高效的融合实践
- 时间:2026-08-27
-
- Linux下Rust代码审查实战:从Clippy到CI/CD自动化
- 时间:2026-08-27
-
- Linux下Rust异步编程实战:async-std与Tokio详解
- 时间:2026-08-27
-
- Linux系统中Rust配置CI/CD完整指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
