要在VPS上设置二级域名,需要通过DNS解析、Web服务器配置以及可能的安全设置等多个步骤完成,以下是详细操作流程,以常见的Linux系统(如Ubuntu)和Nginx服务器为例进行说明。

需要登录到VPS的终端,确保已安装DNS管理工具和Web服务器(如Nginx或Apache),如果尚未安装Nginx,可通过命令sudo apt update && sudo apt install nginx
进行安装,二级域名的设置核心在于DNS解析和服务器配置两部分。
第一步:DNS解析配置
DNS解析是将二级域名指向VPS的IP地址的过程,登录你的域名注册商管理后台(如阿里云、GoDaddy等),找到DNS管理或解析设置页面,添加一条A记录或CNAME记录:
- A记录:适用于直接指向VPS的公网IP,记录类型选择“A”,主机记录填写二级域名(如“blog”),记录值填入VPS的IP地址,TTL保持默认即可。
- CNAME记录:适用于将二级域名指向另一个域名(如主域名),记录类型选择“CNAME”,主机记录填写二级域名,记录值填入主域名(如“example.com”)。
若主域名为example.com
,二级域名为blog.example.com
,则添加A记录时主机记录为blog
,记录值为VPS的IP,保存后,DNS解析可能需要几分钟到几小时生效,可通过ping blog.example.com
命令验证是否指向正确IP。
第二步:Web服务器配置
以Nginx为例,需要为二级域名创建独立的配置文件,在Nginx配置目录(通常为/etc/nginx/sites-available/
)下创建新文件,如blog.example.com
如下:

server { listen 80; server_name blog.example.com; root /var/www/blog; # 二级域名网站根目录 index index.html index.htm; location / { try_files $uri $uri/ =404; } }
配置中,server_name
需与DNS解析的二级域名完全一致,root
指定网站文件存放路径,创建目录后,将网站文件上传至/var/www/blog
,并设置权限:sudo chown -R www-data:www-data /var/www/blog
。
启用配置文件:创建软链接到sites-enabled
目录,sudo ln -s /etc/nginx/sites-available/blog.example.com /etc/nginx/sites-enabled/
,然后测试Nginx配置是否正确:sudo nginx -t
,若无错误则重启Nginx:sudo systemctl restart nginx
。
第三步:可选SSL证书配置
若需HTTPS,可使用Let's Encrypt免费证书,安装Certbot:sudo apt install certbot python3-certbot-nginx
,执行命令自动获取证书:sudo certbot --nginx -d blog.example.com
,按提示选择重定向HTTP到HTTPS,Certbot会自动修改Nginx配置并重启服务。
第四步:防火墙与安全设置
确保防火墙允许HTTP(80)和HTTPS(443)端口,UFW用户可执行:sudo ufw allow 'Nginx Full'
,检查VPS安全组设置,确保开放80和443端口。

常见问题排查
- 二级域名无法访问:检查DNS解析是否生效(使用
dig blog.example.com
查看IP),确认Nginx配置文件语法正确,防火墙是否阻止端口。 - 访问显示主域名内容:检查Nginx配置中
server_name
是否正确,避免与主域名配置冲突,必要时删除默认配置文件/etc/nginx/sites-enabled/default
。
相关问答FAQs
Q1: 如何将二级域名指向子目录?
A1: 在Nginx配置中,使用location
和alias
指令实现,将blog.example.com
指向主域名的/blog
目录:
server { listen 80; server_name blog.example.com; location / { alias /var/www/html/blog; # 子目录路径 try_files $uri $uri/ /index.html; } }
重启Nginx后,访问二级域名即可显示子目录内容。
Q2: 如何为二级域名配置独立SSL证书?
A2: 使用Certbot为每个二级域名单独申请证书,执行sudo certbot --nginx -d sub1.example.com -d sub2.example.com
,可同时为多个域名申请,证书有效期90天,可设置定时任务自动续期:sudo crontab -e
,添加0 12 * * * /usr/bin/certbot renew --quiet
。