当前位置:首页 > 虚拟主机 > 正文

nginx虚拟主机配置多个域名解析

Nginx配置文件(通常位于/etc/nginx)的http块中,为每个域名添加独立的server段,设置listen端口和对应的server_name即可实现多 域名解析

配置步骤详解

修改主配置文件

  • 路径:通常为 /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证书的不同来强化安全性

nginx虚拟主机配置多个域名解析  第1张

0