nginx虚拟主机配置多个域名解析
- 虚拟主机
- 2025-08-19
- 4
配置步骤详解
修改主配置文件
-
路径:通常为
/etc/nginx/nginx.conf
。 -
操作:在
http {}
块内添加多个server
段落,每个段落对应一个域名的配置。http { server { listen 80; # 监听端口(默认HTTP为80) server_name example1.com; # 第一个域名 root /var/www/site1; # 该站点的根目录路径 index index.html; # 默认首页文件 } server { listen 80; # 可复用相同端口或指定其他端口如8080 server_name example2.org www.example2.org; # 支持多个别名 root /var/www/site2; location / { try_files uri uri/ /index.html; } # 可选优化路由规则 } }
-
关键点:
server_name
定义目标域名列表,同一IP下通过此字段区分不同请求;若需绑定SSL,则改用listen 443 ssl
并添加证书路径。
设置主机解析映射
- 本地测试:修改客户端的
hosts
文件(Windows系统位于C:WindowsSystem32driversetchosts),添加类似条目:168.1.100 example1.com 192.168.1.100 example2.org
使域名临时指向服务器公网IP或局域网地址。
- 生产环境:需在DNS服务商处将域名A记录解析至服务器IP地址。
验证与重启服务
- 语法检查:执行命令
nginx -t
确保配置文件无错误。 - 平滑重载配置:运行
/usr/local/nginx/sbin/nginx -s reload
使更改生效,避免中断现有连接。 - 访问测试:通过浏览器分别输入不同域名,确认返回对应的站点内容。
以下是单元表格示例:
| 参数 | 作用 | 示例值 | 备注 |
|——————–|————————–|———————————|———————————-|
| listen
| 绑定端口号 | 80
, 443
, 8080
| HTTP/HTTPS协议使用不同端口 |
| server_name
| 匹配请求头中的Host字段 | example.com
, .subdomain.cn
| 支持通配符和多域名空格分隔 |
| root
| 网站物理路径 | /data/web/siteA
| 相对于文档根目录的绝对路径 |
| index
| 默认索引文件名称 | index.html index.php
| 按顺序尝试列出的文件作为入口页 |
| location /
| URL路径匹配规则 | try_files ...
| 实现动态脚本跳转或静态资源缓存 |
相关问题与解答
Q1: 如果两个域名指向同一目录,如何防止内容混淆?
A: 可以通过在各自的 server
块中定义独特的 location
规则来差异化处理请求,为其中一个域名设置特定的重写规则或代理转发逻辑,即使它们的 root
相同,也能通过URL路径实现隔离,建议通过日志监控流量分布,确保配置符合预期。
Q2: Nginx是否支持基于端口号之外的其他维度区分虚拟主机?
A: 除了端口和域名外,Nginx还支持基于IP地址的虚拟主机(需服务器绑定多个IP),但在实际应用中,由于IP资源有限且管理复杂,基于域名的配置是最主流的方式,对于HTTPS场景,还可以结合TLS证书的不同来强化安全性