LNMP环境下搭建虚拟主机的详细教程与配置指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
在现代Web开发与服务器运维实践中,LNMP架构(Linux + Nginx + MySQL + PHP)因其卓越的性能表现、轻量级设计以及良好的扩展性,已成为众多开发者和系统管理员构建网站服务的首选方案,尤其在需要在同一台服务器上托管多个独立网站的场景中,通过配置Nginx虚拟主机(Virtual Host),可以轻松实现不同域名对应不同网站内容的目标。
本文将系统讲解如何在LNMP环境下安装并配置多个虚拟主机,涵盖环境准备、目录规划、Nginx配置、SSL加密支持及常见问题排查等关键环节,帮助您掌握多站点部署的核心技能,提升资源利用率与运维效率。
什么是LNMP?
LNMP是基于Linux操作系统的典型Web服务技术栈,由以下四大核心组件构成:
- L:Linux —— 稳定可靠的操作系统平台;
- N:Nginx —— 高性能的HTTP服务器与反向代理工具,擅长处理高并发请求;
- M:MySQL 或 MariaDB —— 强大的关系型数据库管理系统,用于存储动态数据;
- P:PHP —— 广泛使用的服务器端脚本语言,适用于构建动态网页应用。
相较于传统的LAMP架构(使用Apache作为Web服务器),LNMP中的Nginx具备更低的内存消耗和更强的并发连接处理能力,在流量密集的应用场景下表现尤为出色,无论是初创项目还是大型互联网平台,LNMP都成为越来越主流的技术选择。
为什么需要虚拟主机?
随着业务需求的增长,单一网站已无法满足多样化服务的需求,利用虚拟主机技术,可以在一台物理服务器上同时运行多个独立网站,每个站点拥有专属的域名、文档根目录、访问日志甚至SSL证书。
www.site1.com
映射到/var/www/site1
www.site2.com
映射到/var/www/site2
这种“一机多站”的模式不仅显著降低了硬件成本,也提高了服务器资源的利用率,特别适合中小型团队或个人开发者进行多项目管理。
虚拟主机还支持灵活的权限控制、独立的日志记录和安全策略配置,为后续的维护与监控提供了便利。
部署前的准备工作
在正式配置虚拟主机之前,请确保已完成以下基础工作:
安装LNMP运行环境
推荐使用成熟的自动化部署工具来搭建LNMP环境,国内广泛采用的是 lnmp.org 提供的一键安装脚本,它集成了Nginx、MySQL/MariaDB、PHP及其常用扩展的自动编译与配置流程,极大简化了安装步骤。
⚠️ 若自行手动编译,请注意各组件版本兼容性及依赖库的正确安装。
获取服务器管理权限
必须具备 root 用户权限 或可通过 sudo
执行特权命令,以便修改系统配置文件、重启服务和管理防火墙规则。
域名解析设置
将您的域名(如 site1.com
和 site2.com
)通过DNS服务商(如阿里云、腾讯云、Cloudflare等)指向服务器的公网IP地址,建议至少完成A记录解析,并等待DNS缓存更新生效。
创建网站目录结构
为每个网站创建独立的根目录,避免文件冲突与权限混乱:
mkdir -p /var/www/site1 mkdir -p /var/www/site2
建议遵循统一命名规范,便于后期识别与维护。
部署测试页面
在每个站点目录中放置一个简单的HTML或PHP测试页,用于验证虚拟主机是否正常工作:
<!-- /var/www/site1/index.html --> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" />Welcome to Site1</title> </head> <body> <h1>🎉 欢迎访问 Site1</h1> <p>这是第一个测试站点。</p> </body> </html>
完成后,赋予适当的读取权限以确保Nginx可访问这些资源。
配置Nginx虚拟主机
Nginx通过 server { }
块来定义每一个虚拟主机实例,以下是详细的配置流程。
进入配置目录
标准的虚拟主机配置文件通常存放于 Nginx 的 vhost
子目录中(若使用 LNMP.org 脚本安装):
cd /usr/local/nginx/conf/vhost
如果该目录不存在,可手动创建:
mkdir -p /usr/local/nginx/conf/vhost
并在主配置文件 nginx.conf
中引入此路径下的所有 .conf
文件:
include vhost/*.conf;
编写虚拟主机配置文件
以 site1.com
为例,创建其专属配置文件:
vim site1.com.conf
输入如下配置内容:
server { listen 80; server_name www.site1.com site1.com; root /var/www/site1; index index.php index.html index.htm; access_log /usr/local/nginx/logs/site1_access.log combined; error_log /usr/local/nginx/logs/site1_error.log warn; # 处理静态资源请求 location / { try_files $uri $uri/ =404; } # 支持PHP动态解析 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问敏感文件 location ~ /\.ht { deny all; } # 可选:限制上传大小 client_max_body_size 64M; }
✅ 注意事项:
fastcgi_pass
应与 PHP-FPM 监听地址一致(通常为0.0.1:9000
);SCRIPT_FILENAME
必须准确指向脚本路径;- 日志级别设为
warn
可减少冗余输出。
同理,为 site2.com
创建对应的 site2.com.conf
文件,仅需更改 server_name
与 root
路径即可。
校验配置并重启服务
配置完成后,务必先检查语法正确性,防止因错误导致Nginx启动失败:
/usr/local/nginx/sbin/nginx -t
若返回提示 “syntax is ok” 和 “test is successful”,说明配置无误。
随后重新加载配置,使变更生效:
/usr/local/nginx/sbin/nginx -s reload
💡 推荐做法:也可使用 systemd 管理Nginx(如已配置),执行
systemctl reload nginx
。
绑定域名并进行本地测试
为了在不依赖公网解析的情况下快速验证配置效果,可通过修改本地hosts文件模拟域名解析。
修改 hosts 文件
-
Windows系统:
路径为C:\Windows\System32\drivers\etc\hosts
使用管理员权限打开记事本编辑该文件。 -
Linux/macOS系统:
路径为/etc/hosts
使用sudo vim /etc/hosts
编辑。
添加如下映射(请替换为实际服务器IP):
168.1.100 www.site1.com
192.168.1.100 www.site2.com
保存后,在浏览器中访问 http://www.site1.com
,应能看到之前部署的测试页面。
🔍 提示:清除浏览器缓存或使用隐身模式测试更准确。
启用HTTPS:配置SSL安全加密(可选但强烈推荐)
为保障用户数据传输安全,建议为所有公开站点启用HTTPS协议,目前最便捷的方式是使用 Let’s Encrypt 免费证书。
若您使用的是 lnmp.org 提供的脚本,可直接调用内置命令一键申请与部署:
<!-- /var/www/site1/index.html --> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" />Welcome to Site1</title> </head> <body> <h1>🎉 欢迎访问 Site1</h1> <p>这是第一个测试站点。</p> </body> </html>0
按提示输入域名(如 site1.com
)、邮箱地址后,脚本会自动完成以下操作:
- 向 Let's Encrypt 发起证书申请;
- 验证域名所有权;
- 下载并配置SSL证书;
- 更新Nginx配置以支持443端口和HTTPS重定向。
完成后,访问 https://www.site1.com
即可通过加密通道加载页面,浏览器地址栏显示锁形标志,表示连接安全。
🛡️ 进阶建议:开启HSTS、使用