一个 VPS,多个网站?只需几步,Nginx 虚拟主机帮你实现!
在 Linux VPS 上使用 Nginx 搭建网站时,很多新手会困惑:如何用一台服务器同时运行多个网站(多个域名)?
答案就是:Nginx Virtual Hosting(虚拟主机)。
本文以配置 2 个站点为例,手把手教你完成多域名部署。如果你有 n 个站点,只需按相同逻辑扩展即可!
🧩 配置思路
Nginx 通过 server 块识别不同域名请求,并将流量导向对应的网站目录。核心步骤如下:
- 创建独立的配置文件存放目录(推荐
vhosts) - 为每个域名编写单独的
.conf配置文件 - 在主配置文件
nginx.conf中引入这些虚拟主机 - 重启 Nginx 生效
🔧 具体操作步骤
第一步:创建虚拟主机配置目录
mkdir -p /etc/nginx/vhosts
💡 建议统一管理,避免配置散落在各处。
第二步:配置第一个站点(example1.com)
创建文件 /etc/nginx/vhosts/example1.com.conf,内容如下:
server {
listen 80;
server_name example1.com www.example1.com;
access_log /www/logs/access_example1.log main;
root /www/example1.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# PHP 支持(假设 PHP-FPM 监听 127.0.0.1:9000)
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;
}
# 禁止访问 .htaccess 等敏感文件
location ~ /\.ht {
deny all;
}
}
✅ 优化说明:
- 使用
$document_root替代硬编码路径,更安全灵活- 添加
try_files防止目录遍历- 日志路径改为
/www/logs/(请确保该目录存在)
第三步:配置第二个站点(example2.com)
创建文件 /etc/nginx/vhosts/example2.com.conf:
server {
listen 80;
server_name example2.com www.example2.com;
access_log /www/logs/access_example2.log main;
root /www/example2.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
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;
}
}
⚠️ 注意:原文中两个站点的日志文件名都写成了
access_example1.log,这里已修正为各自独立的日志。
第四步:修改主配置文件,引入虚拟主机
编辑 /etc/nginx/nginx.conf,在 http { } 块内末尾添加:
# 加载所有虚拟主机配置
include /etc/nginx/vhosts/*.conf;
❗ 重要修正:
原文中写的是include /usr/local/etc/nginx/vhosts/*;,但前面创建的目录是/etc/nginx/vhosts/,路径必须一致!否则配置不会生效。
完整 http 块示意(节选):
http {
...
gzip on;
# 默认 server(可选)
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
}
# 引入所有虚拟主机
include /etc/nginx/vhosts/*.conf;
}
第五步:检查配置并重启 Nginx
http {
...
gzip on;
# 默认 server(可选)
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
}
# 引入所有虚拟主机
include /etc/nginx/vhosts/*.conf;
}
✅ 成功标志:访问
http://example1.com和http://example2.com分别显示对应网站内容。
🔒 安全与维护建议
- ✅ 确保每个站点的
root目录权限合理(如chown -R www-data:www-data /www/example1.com) - ✅ 创建日志目录:
mkdir -p /www/logs - ✅ 若使用 HTTPS,记得为每个域名配置 SSL 证书(可用 Let’s Encrypt 免费申请)
- ✅ 定期备份
/etc/nginx/vhosts/下的配置文件
🌟 结语
通过 Nginx 虚拟主机,你可以轻松在一台 VPS 上托管数十个网站,成本低、效率高。掌握这项技能,是迈向专业运维的重要一步。
配置一次,多站无忧。
如果你觉得这篇教程有用,欢迎点赞、收藏或转发给正在搭建多站点的朋友!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END













暂无评论内容