企业级虚拟主机多域名安全隔离需分层设防、职责分离、可审计收敛;按域名粒度拆分独立配置文件,禁用全局混写与通配符;强制https并差异化ssl策略;实施网络与应用层双重限流;路径级代理隔离并强化安全响应头。

构建企业级虚拟主机多域名安全隔离,核心不是堆砌功能,而是分层设防、职责分离、可审计可收敛。重点不在“能不能配多个域名”,而在“一个域名出问题,会不会拖垮其他业务、泄露数据、绕过策略”。
按域名粒度拆分配置文件,禁用全局混写
所有域名相关配置必须独立成文件,统一放在 /etc/nginx/conf.d/ 下,命名如 app1.example.com.conf、api.internal.conf。严禁在主 nginx.conf 或单个 server{} 块里塞多个域名或跨租户逻辑。
- 每个文件只定义一个 server{} 块(HTTPS 和 HTTP 可共存于同一文件,但需明确区分 listen 80 与 listen 443 ssl)
- 禁止使用通配符 server_name *.example.com 承载生产核心服务,子域名必须显式声明(如 admin.example.com、docs.example.com)
- 配置加载前执行 nginx -t,确保单个文件语法正确且不与其他文件冲突(例如重复 server_name)
强制启用 HTTPS 并差异化 SSL 策略
HTTP 不再是可选项,所有对外域名必须配置 TLS,且证书、协议、密钥交换策略按业务敏感度分级。
- 面向用户的域名(如 www.example.com)使用 Let’s Encrypt 全链证书,启用 HTTP/2 和 TLS 1.3,禁用弱密码套件
- 内部管理类域名(如 admin.example.com)强制双向 TLS 认证(mTLS),要求客户端提供有效证书
- API 域名(如 api.example.com)配置 ssl_buffer_size 4k 降低延迟,并设置 ssl_session_tickets off 防止会话重放
网络层与应用层双重限流+连接控制
仅靠防火墙或 WAF 不足以应对租户间资源争抢,必须在 Nginx 配置中嵌入细粒度的流量治理规则。
- 为每个域名定义独立限流区域:例如 limit_req_zone $binary_remote_addr zone=web1:10m rate=50r/s;,并在对应 server{} 中调用 limit_req burst=100 nodelay;
- 限制单 IP 并发连接数:limit_conn_zone $binary_remote_addr zone=ip_conns:10m; + limit_conn ip_conns 16;
- 对登录、重置密码等高风险路径(如 /login、/reset)单独启用更严限流(如 5r/m),并记录到独立访问日志
路径级代理隔离 + 安全头强化
当多个后端服务共用一个域名时(如 example.com/app1 和 example.com/app2),不能仅靠 location /app1 简单转发,必须叠加访问控制与响应加固。
- 每个 location 块内明确指定 proxy_pass http://backend_app1(使用 upstream 名称而非裸 IP+端口),避免硬编码暴露后端拓扑
- 强制注入安全响应头:add_header X-Content-Type-Options "nosniff" always;、add_header X-Frame-Options "DENY" always;、add_header Content-Security-Policy "default-src 'self';" always;
- 禁止通过 URL 路径绕过认证:对敏感路径(如 /admin/、/api/v1/internal)添加 auth_request 指令,接入统一鉴权服务











