Nginx虚拟主机隔离需从网络层、配置层、运行时三维度同步切断交叉影响;具体包括端口+防火墙白名单、域名+独立证书与TLS策略、资源与日志分离、文件系统权限物理隔离。

独立项目部署中,Nginx 虚拟主机的隔离不是靠“配一个 server 块”就完事,而是要从网络层、配置层、运行时三个维度同步切断交叉影响。核心目标是:一个项目出问题,不波及其他项目;一个项目被攻击,不拖垮整台服务器。
按端口绑定 + 防火墙白名单
适合内部系统、测试环境或管理后台。每个项目监听不同端口(如 8081、8082),但关键在限制谁可以访问这些端口:
- 用 iptables 或 firewalld 明确只放行可信网段(如内网 192.168.10.0/24)访问 8081,其他来源一律 DROP
- Nginx 的 server 块里再加一层 allow/deny,比如 allow 192.168.10.0/24; deny all;,避免防火墙规则被绕过
- 敏感服务(如数据库管理页)建议绑定到 127.0.0.1:8081,彻底拒绝外部网络连接
按域名隔离 + 独立证书与 TLS 策略
面向公网的正式项目必须这么做,杜绝证书混用和加密策略冲突:
- 每个 server 块必须指定专属证书路径:ssl_certificate /etc/nginx/ssl/project-a/fullchain.pem;,不能共用同一组 PEM 文件
- 私钥权限设为 600,防止被其他用户读取
- TLS 协议和密码套件单独配置,比如后台系统启用 TLSv1.3 + Modern Cipher,老设备接口保留 TLSv1.2 + Intermediate
- 用 return 301 https://$host$request_uri; 强制跳转,不用 rewrite
资源与日志完全分离
隔离不只是访问控制,更是运维可见性:
- 每个 server 块配独立 access_log 和 error_log,路径含项目名,例如 access_log /var/log/nginx/project-b.access.log main;
- 按项目设置限流:在 http 块定义 limit_req_zone $server_name zone=proj_b_api:20m rate=50r/m;,再在对应 location 中调用
- 静态资源 root 目录不共用,避免误删或权限覆盖;建议用绝对路径,如 root /opt/project-c/dist;
配合文件系统权限做物理隔离
尤其适用于多租户或团队协作场景:
- 每个项目的代码目录归属独立系统用户(如 proj-d:proj-d),禁止其他用户 cd 进入或修改
- 目录权限设为 755,文件为 644,上传目录(如 uploads)可设为 750 并加入特定用户组
- 若用宝塔等面板,通过“子目录绑定 + 独立所有者 + 主目录限制”实现 FTP/SSH 级别隔离


















