上一篇
nginx配置虚拟主机有哪三种方法?
- 虚拟主机
- 2025-06-12
- 2525
nginx配置虚拟主机主要有三种方式:基于不同端口(同一IP)、基于不同IP地址(同一端口)、基于不同域名(同一IP和端口),核心是通过在配置文件中定义多个
server
块实现。
虚拟主机的作用与重要性
虚拟主机(Virtual Host)允许在单一服务器上运行多个网站或应用,通过不同标识(如域名、IP、端口)区分访问请求,Nginx 作为高性能 Web 服务器,灵活支持虚拟主机配置,能显著节省硬件成本并提升资源利用率,以下是三种主流配置方法,附详细操作指南和场景建议。
基于域名(Server Name)
原理:通过客户端请求中的 Host
头字段匹配不同域名,指向对应的网站目录。
适用场景:单服务器托管多个独立域名的网站(最常见)。
配置示例:
# 网站1:example.com server { listen 80; # 监听80端口 server_name example.com; # 绑定域名 root /var/www/example; # 网站根目录 index index.html; location / { try_files $uri $uri/ =404; } } # 网站2:test.com server { listen 80; server_name test.com; root /var/www/test; index index.html; }
关键说明:
- 确保域名已解析到服务器IP。
- 使用
server_name
区分不同站点,避免冲突。
基于端口(Port-Based)
原理:通过不同端口号(如 8080、9000)访问同一IP上的不同网站。
适用场景:临时测试环境、内部服务或受限域名场景。
配置示例:
# 主网站:默认80端口 server { listen 80; server_name example.com; root /var/www/example; } # 测试站点:8080端口 server { listen 8080; # 指定非标准端口 server_name example.com; root /var/www/test; }
访问方式:浏览器输入 http://example.com:8080
。
注意事项:
- 需开放防火墙端口(如
sudo ufw allow 8080
)。 - 非标准端口可能被安全策略拦截。
基于IP地址(IP-Based)
原理:为每个网站分配独立IP,Nginx 根据请求的IP地址路由流量。
适用场景:需强隔离的合规项目(如SSL证书绑定独立IP)。
配置示例:
# 网站1:绑定IP 192.0.2.1 server { listen 192.0.2.1:80; # 指定IP和端口 server_name example.com; root /var/www/example; } # 网站2:绑定IP 192.0.2.2 server { listen 192.0.2.2:80; server_name test.com; root /var/www/test; }
实现前提:
- 服务器需配置多个IP(通过网卡子接口或云平台弹性IP)。
- 成本较高,适用于特殊需求场景。
最佳实践与常见问题
-
优先级规则:
Nginx 匹配顺序:- 精确域名 → 通配符域名(如
*.example.com
)→ 默认服务器(listen ... default_server
)。
- 精确域名 → 通配符域名(如
-
调试技巧:
- 检查配置语法:
sudo nginx -t
- 重载配置:
sudo nginx -s reload
- 查看访问日志:
tail -f /var/log/nginx/access.log
- 检查配置语法:
-
安全建议:
- 限制默认服务器:避免未配置域名指向敏感目录。
- 启用HTTPS:使用 Let’s Encrypt 免费证书强化安全。
如何选择配置方式
方法 | 优势 | 局限 |
---|---|---|
基于域名 | 成本低、易于扩展 | 依赖域名解析 |
基于端口 | 无需额外IP或域名 | 需用户记忆端口号 |
基于IP | 支持特殊协议/证书需求 | 增加服务器IP成本 |
引用说明:本文配置参考 Nginx 官方文档 Server Blocks,并结合服务器安全最佳实践,操作前请备份配置文件(
/etc/nginx/nginx.conf
)。