🌐 一文搞定 Nginx 多站点配置:轻松托管多个域名

一个 VPS,多个网站?只需几步,Nginx 虚拟主机帮你实现!

在 Linux VPS 上使用 Nginx 搭建网站时,很多新手会困惑:如何用一台服务器同时运行多个网站(多个域名)?

答案就是:Nginx Virtual Hosting(虚拟主机)

本文以配置 2 个站点为例,手把手教你完成多域名部署。如果你有 n 个站点,只需按相同逻辑扩展即可!


🧩 配置思路

Nginx 通过 server 块识别不同域名请求,并将流量导向对应的网站目录。核心步骤如下:

  1. 创建独立的配置文件存放目录(推荐 vhosts
  2. 为每个域名编写单独的 .conf 配置文件
  3. 在主配置文件 nginx.conf 中引入这些虚拟主机
  4. 重启 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.comhttp://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
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容