游客
2026年VPS怎么绑定多个域名?3个简单方法

2026年VPS怎么绑定多个域名?3个简单方法

一言准备中...

VPS绑定多个域名?手把手教你从零搞定,这些坑千万别踩

很多新手站长买回VPS之后,第一件事就是想把手上几个域名都挂上去——一个放博客、一个放图床、还有一个给客户做演示站。可看着默认的IP访问页面,一脸懵:怎么让不同域名访问不同站点?其实这事儿在Linux VPS上特别简单,用Nginx或Apache的虚拟主机(Virtual Host)功能就能搞定。今天我就拿自己踩过的坑,给你一份能直接照做的教程。

准备工作:你需要的只有三样

  1. 一台能正常运行的VPS(我用的是沐雨云服务器,后面细说为什么推荐)
  2. 已解析到VPS IP的多个域名(比如 blog.example.comshop.example.net
  3. SSH客户端(Windows用Putty或Termius,Mac/Linux自带终端)

避坑第一步:域名解析一定要先做!很多人连A记录都没添加就开始配服务器,结果怎么都打不开。建议提前30分钟解析好,等TTL生效。

方案一:Nginx虚拟主机(推荐新手)

Nginx轻量、高性能,现在绝大多数环境都自带。操作分三步:

1. 创建站点目录

假设你想放两个站点:/var/www/blog/var/www/shop。SSH登录后执行:

sudo mkdir -p /var/www/blog
sudo mkdir -p /var/www/shop

然后随便丢个 index.html 进去测试用,比如:

echo "<h1>这是博客</h1>" | sudo tee /var/www/blog/index.html
echo "<h1>这是商城</h1>" | sudo tee /var/www/shop/index.html

2. 配置Nginx虚拟主机

进入 /etc/nginx/sites-available/(如果目录不存在,有些系统是 /etc/nginx/conf.d/),创建两个配置文件:

sudo nano /etc/nginx/sites-available/blog.conf

写入:

server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog;
    index index.html index.php;
    # 如果是静态站,到这里就够;如果有PHP,加下面这行
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

同样的方式创建 shop.conf,把 server_name 改成 shop.example.netroot 改成对应目录。

然后启用配置(Ubuntu/Debian需要软链接到 sites-enabled):

sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/shop.conf /etc/nginx/sites-enabled/

测试配置是否正确:

sudo nginx -t

如果输出 syntax is ok,重载Nginx:

sudo systemctl reload nginx

避坑第二弹:默认的 /etc/nginx/sites-enabled/default 会监听80端口,如果不想要它干扰,可以删除或注释掉。最好把default里的 listen 80 default_server 改成 listen 80 default_server 并指向一个统一的404页面,防止别人用IP直接访问你的站点。

3. 验证

在浏览器输入 http://blog.example.com 应该看到“这是博客”,输入 http://shop.example.net 看到“这是商城”。如果其中一个打不开,先检查域名解析,再检查服务器防火墙(用 sudo ufw status 看80端口是否开放),最后看Nginx日志 /var/log/nginx/error.log

方案二:Apache虚拟主机(宝塔面板常用)

早期用户可能用Apache,步骤类似但文件路径不同:

  • 配置文件在 /etc/apache2/sites-available/.conf 结尾)
  • 启用站点用 sudo a2ensite blog.conf 然后 sudo systemctl reload apache2

Apache的配置模板:

<VirtualHost *:80>
    ServerName blog.example.com
    DocumentRoot /var/www/blog
    <Directory /var/www/blog>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

避坑第三弹:Apache默认没有启用 .htaccess 支持,如果你用WordPress之类伪静态程序,记得开启 sudo a2enmod rewrite

进阶需求:一个IP绑定多个SSL域名(HTTPS)

现在网站基本都要上SSL,你可以用Let's Encrypt免费证书。Nginx + Certbot 一键搞定:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d blog.example.com -d shop.example.net

Certbot会自动修改Nginx配置,为每个域名生成证书并启用HTTPS。注意:如果多个域名都在同一个服务器块(server block),你需要在证书申请时一次声明所有域名。

避坑第四弹:有些VPS默认的防火墙(如阿里云安全组、腾讯云安全组)需要手动放行443端口。沐雨云服务器这点做得很好,官网后台直接一键开启端口策略,省得自己敲命令。

为什么我推荐沐雨云服务器?

实操这么久,用过五六家VPS厂商。沐雨云是我最近两年一直用的:

  • 原生KVM架构,CPU不超售,跑WordPress这种动态站不会突然卡死。
  • 控制面板很“无脑”:重装系统、挂载数据盘、续费都在一个界面完成,新手不用翻文档。
  • 网络稳定:有过一次被DDoS攻击,他们直接免费帮我切了高防IP,没断站。
  • 价格适中:最低配的1核1G跑四五个小站完全够用,性价比很高。

最关键的是,沐雨云的售后响应很快——上次我配置多域名时遇到一个奇怪的403权限问题,工单10分钟就回复了,还截图给我指出是目录所有权没给www-data用户。这种“保姆式”服务在便宜VPS里很少见。

常见问题与终极避坑清单

  1. 端口冲突:如果80端口被Apache占了,Nginx就启动不了。解决办法:停掉Apache(sudo systemctl stop apache2)或者把其中一个改端口(不推荐)。
  2. 权限问题:站点目录的所有权要给Web服务用户。Nginx一般是 www-data,命令:sudo chown -R www-data:www-data /var/www/blog
  3. SELinux:CentOS/RHEL系统默认开启SELinux,会导致Nginx读不到目录。要么关闭(setenforce 0),要么改上下文(chcon -R -t httpd_sys_content_t /var/www/blog)。
  4. 默认站点抢占了:如果你用 server_name _; 作为默认站点,一定要确保它排在最后一个加载,否则所有域名都会跳到这个站点。Nginx加载顺序按文件名排序,可以加数字前缀如 00-default.conf
  5. 解析缓存:改完域名指向后,本地浏览器可能缓存旧的IP。用 nslookup blog.example.com 查看真实解析,或者换个网络测试。

绑定多域名其实就这点儿活儿,搞懂一次之后,以后添加新站就是复制粘贴+改个域名和目录。如果你不想手动折腾,沐雨云后台也支持一键部署WordPress、宝塔面板,点几下鼠标就能挂三个站。

最后,记住一个真理:配置文件改完后一定先 nginx -t 再 reload,不然打不开页面还要满世界找错

沐雨云服务器官网:https://www.muyuyun.cn

  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/vpszs/448.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
361
0
0
0
内卷太严重,已躺平...

2026日本服务器游戏加速节点:延迟低到惊人

上一篇

2026服务器被入侵?3步紧急应急处理!

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单