linux如何配置多域名,linux服务器多域名绑定配置方法
- 虚拟主机
- 2026-04-11
- 2302
在Linux服务器上配置多域名,核心在于通过Nginx或Apache虚拟主机实现单服务器多站点部署,结合DNS解析与SSL证书管理,确保各域名独立、安全、高效运行,以下为经过生产环境验证的标准化配置方案,兼顾性能、可维护性与安全性。
基础环境准备:确保系统层支撑能力
首先确认服务器已安装Nginx 1.18+ 或 Apache 2.4+(推荐Nginx,因其事件驱动架构更适合高并发场景),执行以下命令检查版本:
nginx -v # 输出应为 nginx version: nginx/1.18.0 或更高
若未安装,使用包管理器安装(以Ubuntu为例):
sudo apt update && sudo apt install nginx -y
关键点:禁用默认站点配置,避免域名冲突,删除或重命名 /etc/nginx/sites-enabled/default 文件。
DNS解析配置:域名指向服务器IP
在域名服务商后台(如阿里云、西西云),为每个域名添加A记录,统一指向服务器公网IP。


- www.example1.com → 168.1.100
- api.example2.com → 168.1.100
验证步骤:在本地终端执行 ping www.example1.com,确认返回目标IP地址,DNS生效通常需5-30分钟,可通过 dig example1.com 实时查询解析状态。
Nginx虚拟主机配置:核心多域名实现逻辑
进入配置目录 /etc/nginx/conf.d/,为每个域名创建独立配置文件(如 example1.conf、example2.conf),以下为生产级配置模板(含安全加固与性能优化):
# 示例1:主站配置(example1.com) server { listen 80; server_name example1.com www.example1.com; return 301 https://$server_name$request_uri; # 强制HTTPS跳转 } server { listen 443 ssl http2; server_name example1.com www.example1.com; ssl_certificate /etc/ssl/certs/example1.crt; # SSL证书路径 ssl_certificate_key /etc/ssl/private/example1.key; root /var/www/example1/public; index index.html index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # 安全头增强 add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; }
关键优化项:
- HTTP/2支持:listen 443 ssl http2 提升页面加载速度;
- 安全头配置:防御点击截持与MIME类型嗅探攻破;
- PHP-FPM集成:通过Unix Socket通信,比TCP更高效;
- 静态资源缓存:在 location ~* .(css|js|jpg|png)$ 中添加 expires 30d;。
SSL证书自动化管理:解决证书过期风险
强烈推荐使用Certbot自动申请与续期证书,避免手动配置导致的过期中断:

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d example1.com -d www.example1.com
执行后按提示完成挑战验证,Certbot将自动修改Nginx配置并设置定时任务(systemctl status certbot.timer 可查)。
经验案例:某电商客户使用西西云CDN+SSL证书托管服务,通过API对接Certbot,实现100+域名证书的自动轮转,证书过期率降至0.01%以下,显著提升业务连续性。
性能与监控:保障多域名稳定运行
- 连接限制:在Nginx主配置 /etc/nginx/nginx.conf 中设置: worker_connections 1024; # 根据服务器CPU核心数调整 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; # 防cc攻破
- 日志分离:为每个域名配置独立访问日志: access_log /var/log/nginx/example1_access.log; error_log /var/log/nginx/example1_error.log;
- 健康检查:部署 curl -I http://localhost/health 脚本,通过systemd定时监控服务状态。
常见问题排查指南
- 502 Bad Gateway:检查PHP-FPM服务是否运行(systemctl status php8.1-fpm);
- 403 Forbidden:确认目录权限(chmod -R 755 /var/www/example1);
- SSL握手失败:验证证书链完整性(openssl s_client -connect example1.com:443 -showcerts)。
相关问答
Q1:多域名共用一个IP时,如何避免搜索引擎判定为重复内容?
A:通过rel="canonical"标签明确主域名,在各站点HTML <head> 中添加:
<link rel="canonical" href="https://www.example1.com/" />
同时在Nginx中为非主域名返回rel="nofollow",确保搜索引擎识别主站点。
Q2:能否在同一服务器部署HTTP与HTTPS混合站点?
A:不推荐,现代浏览器对混合内容(HTTP资源嵌入HTTPS页面)会拦截,导致功能失效。必须全站强制HTTPS,通过Nginx的return 301跳转实现。