在ECS服务器上配置两个域名,核心是通过Web服务器(如Nginx、Apache或IIS)设置虚拟主机,将不同域名指向不同网站目录,再配合域名解析即可实现。
准备工作:域名解析与环境检查
在动手配置之前,需要先完成两项基础工作:域名解析和服务器环境确认,这两步如果出错,后续配置将无法生效。
域名解析到ECS公网IP
登录域名注册商的管理面板,为每个域名添加A记录,指向ECS实例的公网IP。
- 域名A
example1.com-> 公网IP123.123.123 - 域名B
example2.com-> 公网IP123.123.123
需要等待DNS生效,通常在几分钟到几小时内,可以用ping命令验证域名是否解析到正确IP。
确认服务器Web环境
登录ECS,确认已安装Web服务器软件,常见环境组合:
- Linux + Nginx:轻量、高并发,适合静态资源或反向代理场景。
- Linux + Apache:稳定、模块丰富,适合传统PHP应用。
- Windows + IIS:与.NET生态深度集成,适合企业级应用。
如果尚未安装,可参考对应操作系统的包管理器命令快速安装:
- Ubuntu/Debian:
sudo apt install nginx或sudo apt install apache2 - CentOS/RHEL:
sudo yum install nginx或sudo yum install httpd - Windows Server:通过“服务器管理器”添加IIS角色,或使用命令行安装。
基于Nginx配置两个域名
Nginx通过server块实现虚拟主机,每个域名对应一个独立的配置块,这是简米云ECS配置多个网站最常用的方式之一。
创建两个网站目录
为每个域名准备独立的根目录,存放网站文件:
sudo mkdir -p /var/www/example1 sudo mkdir -p /var/www/example2
分别放入index.html或对应程序文件,作为测试。
编写Nginx虚拟主机配置
Nginx默认配置文件位于/etc/nginx/nginx.conf,但更推荐在/etc/nginx/conf.d/下新建独立配置文件,便于管理,创建example1.conf:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
同样创建example2.conf,将server_name和root替换为对应域名和目录。
检查配置并生效
sudo nginx -t # 检查语法 sudo systemctl reload nginx # 重载配置
多域名配置注意事项
- 多个
server块中listen指令可以相同,Nginx通过server_name区分请求。 - 如果域名需要HTTPS,需为每个域名单独配置SSL证书,或使用泛域名证书。
- 当域名指向同一个IP但端口不同时,
listen需指定端口,如listen 8080。
基于Apache配置两个域名
Apache通过<VirtualHost>指令实现基于域名的虚拟主机,是服务器配置两个域名的方法中经典方案。
启用虚拟主机功能
在Ubuntu/Debian上,需要先启用站点配置模块:
sudo a2ensite
在CentOS上,虚拟主机配置通常写在/etc/httpd/conf.d/下。
创建虚拟主机配置
新建/etc/apache2/sites-available/example1.conf(Ubuntu)或/etc/httpd/conf.d/example1.conf(CentOS):
<VirtualHost :80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1
<Directory /var/www/example1>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
类似地创建第二个域名配置。
启用站点并重载
Ubuntu:
sudo a2ensite example1.conf sudo a2ensite example2.conf sudo systemctl reload apache2
CentOS:
sudo systemctl reload httpd
Apache vs Nginx配置对比
| 对比维度 | Apache虚拟主机 | Nginx虚拟主机 |
|---|---|---|
| 配置指令 | <VirtualHost> |
server块 |
| 配置位置 | sites-available/ 或 conf.d/ |
conf.d/ 或 nginx.conf内 |
| 区分域名依据 | ServerName |
server_name |
| 动态加载 | 需启用站点(a2ensite) |
直接重载即可 |
| 性能特点 | 模块丰富,.htaccess支持好 | 高并发稳定,内存占用低 |
行业共识认为,Nginx在静态资源分发和高并发场景下优势明显,Apache则更适合需要大量模块扩展的传统环境。
Windows IIS上配置两个域名
如果ECS是Windows Server,IIS(Internet Information Services)是默认的Web服务器。ECS服务器绑定多个域名在IIS中通过绑定主机名实现。
添加网站
打开IIS管理器,在左侧“连接”面板右键“网站” -> “添加网站”,填写:
- 网站名称:自定义,如
example1 - 物理路径:对应网站目录,如
C:inetpubwwwrootexample1 - 绑定类型:
http,IP地址保持不变,端口80,主机名填写example1.com
点击“确定”完成第一个网站创建。
为第二个域名添加网站
重复上述步骤,物理路径指向另一个目录,主机名填写example2.com,无需额外配置,IIS会自动根据请求中的Host头分发流量。
修改hosts文件测试(可选)
在本地测试时,可以编辑C:WindowsSystem32driversetchosts,添加临时解析记录:
123.123.123 example1.com
123.123.123.123 example2.com
然后通过浏览器访问,验证配置是否生效。
常见问题与排错
配置过程中可能会遇到一些问题,下面列出服务器ecs怎么配置两个域名时常见的几个场景。
域名解析后访问不到网站
检查ECS安全组是否放行80端口(或443端口),在简米云控制台->安全组规则中添加入方向规则,允许HTTP(80)、HTTPS(443)访问,如果使用自定义端口,也需同步放行。
一个域名访问显示另一个网站的内容
通常是server_name或ServerName配置错误,导致Web服务器默认使用第一个虚拟主机处理所有请求,仔细检查每个配置块的域名拼写,并确保没有遗漏。
多个域名使用同一个证书
如果使用HTTPS,且两个域名属于同一个主域(如example1.com和sub.example1.com),可以申请通配符证书.example1.com,一个证书覆盖所有子域名,如果域名完全不同,则需要为每个域名单独申请证书,或使用支持多域名的SAN证书。
配置完成后网页加载缓慢
检查服务器资源占用情况,如CPU、内存、带宽,如果多个域名共享同一台ECS,且网站流量较大,可能需要升级配置或使用CDN分担压力,多数情况下,小型站点在同一台服务器上运行两个域名不会产生明显性能瓶颈。
多域名场景下的安全与性能考量
目录隔离防止跨站风险
建议为每个域名的网站文件分配独立的系统用户,并设置目录权限,避免一个站点被入侵后殃及其他站点,在Linux上可以使用chown -R修改所有者,配合PHP-FPM的pool配置实现用户隔离。
日志分离便于排查
将不同域名的访问日志、错误日志分开记录,Nginx示例:
access_log /var/log/nginx/example1_access.log; error_log /var/log/nginx/example1_error.log;
Apache类似,在<VirtualHost>内使用CustomLog和ErrorLog指令,日志分离后,出现问题时可以快速定位到具体域名。
资源分配与限流
如果两个域名中一个流量较大,另一个为内部管理后台,可以在Web服务器层面对重要域名做限流或访问控制,Nginx使用limit_req模块,Apache使用mod_ratelimit,合理分配资源,避免一个域名的突发流量耗尽整台ECS的带宽。
服务器ECS配置两个域名常见问题Q&A
在同一台ECS上配置两个域名,对服务器性能影响大吗?
影响取决于具体流量,两个站点共享同一台服务器的CPU、内存和带宽,如果都是轻量级网站,总访问量不高,基本无影响,若其中一个站点访问量较大,可能挤占另一个站点的资源,建议通过监控工具跟踪资源使用情况,必要时升级配置或拆分独立服务器。ECS服务器配置两个域名在多数中小企业场景下完全可行,性能瓶颈通常出现在流量超出预期时。
不同域名能否使用不同的端口?
可以,例如域名A使用80端口,域名B使用8080端口,只需在Web服务器配置中将listen或绑定设置为对应端口,并确保ECS安全组放行该端口,但用户访问域名B时需在URL后加上端口号,如http://example2.com:8080,若希望隐藏端口,建议使用反向代理(如Nginx监听80端口,根据域名转发到不同后端服务)。
配置完成后,如何验证两个域名是否正常工作?
最直接的方法:在浏览器中分别输入两个域名,确认能打开对应网站内容,也可以用命令行工具测试,如curl -H "Host: example1.com" http://123.123.123.123,观察返回的HTML是否包含预期内容,同时检查Web服务器的访问日志,确认请求已被正确识别。
从长远来看,基于虚拟主机的多域名配置是ECS上最经济、最灵活的选择,无需额外购买多台服务器,只需在现有资源上合理规划目录和权限,即可同时运行多个独立站点。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/541665.html



