在构建网站或Web应用时,多域名配置是常见需求,而Nginx作为高性能的Web服务器和反向代理,能够高效实现双域名管理,本文将详细介绍Nginx双域名配置的核心步骤、关键参数及注意事项,帮助用户顺利完成多域名部署。

Nginx双域名配置的基础逻辑
Nginx通过虚拟主机(Virtual Host)技术支持多个域名共享同一台服务器资源,其核心原理是基于server块匹配请求中的server_name(域名)字段,将不同域名的请求分发到对应的配置目录或服务,双域名配置本质上是在Nginx配置文件中定义两个独立的server块,分别监听不同的域名,并配置相应的路由规则、根目录或反向代理参数。
在开始配置前,需确保以下前提条件:
- 域名已完成DNS解析,指向服务器的公网IP地址;
- 服务器已安装Nginx,并具备基本的配置文件编辑权限;
- 若需部署HTTPS,需提前为域名申请SSL证书(可使用Let’s Encrypt免费证书)。
Nginx配置文件结构解析
Nginx的主配置文件通常位于/etc/nginx/nginx.conf,但虚拟主机建议拆分为独立文件存放于/etc/nginx/sites-available/目录,并通过sites-enabled/目录软链接启用,以双域名配置为例,假设需要管理domain1.com和domain2.com,可按以下步骤操作:
创建虚拟主机配置文件
在/etc/nginx/sites-available/目录下创建两个配置文件,如domain1.com.conf和domain2.com.conf,分别对应两个域名的配置内容。
编写第一个域名的server块
以domain1.com为例,配置文件基础内容如下:

server {
listen 80; # 监听HTTP 80端口
server_name domain1.com www.domain1.com; # 绑定域名及www子域名
root /var/www/domain1; # 网站根目录
index index.html index.htm; # 默认首页文件
location / {
try_files $uri $uri/ =404; # 路由规则,尝试访问文件或目录,否则返回404
}
# 可选:配置HTTPS(需先安装SSL证书)
# listen 443 ssl;
# ssl_certificate /path/to/domain1.crt;
# ssl_certificate_key /path/to/domain1.key;
}
编写第二个域名的server块
domain2.com的配置与domain1.com类似,仅需修改server_name、root等参数:
server {
listen 80;
server_name domain2.com www.domain2.com;
root /var/www/domain2;
index index.html index.php; # 若支持PHP,可调整默认首页
location / {
try_files $uri $uri/ =404;
}
# PHP支持示例(需配合PHP-FPM)
# 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;
# }
}
配置文件优化与注意事项
端口与协议管理
- 若同时支持HTTP和HTTPS,需在
server块中分别使用listen 80和listen 443 ssl; - 建议强制HTTPS跳转,在HTTP的
server块中添加以下规则:location / { return 301 https://$host$request_uri; # 301永久跳转 }
日志与错误处理
每个server块可独立配置访问日志和错误日志,便于排查问题:
access_log /var/log/nginx/domain1.access.log; error_log /var/log/nginx/domain1.error.log;
性能优化参数
可根据需求调整连接超时、缓冲区等参数,
client_max_body_size 10M; # 限制上传文件大小 keepalive_timeout 65; # 保持连接超时时间
配置文件验证与生效
完成编辑后,需通过以下命令检查配置语法并重载Nginx:
nginx -t # 检查配置文件语法 systemctl reload nginx # 重载配置使生效
常见问题与解决方案
-
域名无法访问:

- 检查DNS解析是否生效(使用
dig domain1.com命令验证); - 确认防火墙(如iptables、firewalld)放行80/443端口;
- 检查
root目录是否存在且Nginx进程有读取权限。
- 检查DNS解析是否生效(使用
-
HTTPS配置失败:
- 确认SSL证书路径正确且权限可读;
- 检查证书是否包含完整证书链(中级证书);
- 使用
openssl s_client -connect domain1.com:443验证证书有效性。
-
反向代理配置冲突:
若需通过Nginx代理后端服务(如Tomcat、Node.js),需确保location块中的proxy_pass参数正确,并添加必要的代理头:location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
Nginx双域名配置的核心在于合理规划server块,明确域名与目录、服务的对应关系,通过分离配置文件、优化日志管理、启用HTTPS等措施,可提升网站的安全性和可维护性,实际操作中,需结合业务需求调整路由规则、性能参数,并定期检查配置文件的正确性,掌握Nginx虚拟主机技术,不仅能高效管理多域名站点,也为后续扩展更多域名或部署复杂架构奠定基础。


















