Nginx 可为不同虚拟主机(server 块)配置独立的访问控制策略,包括 IP 白名单/黑名单、用户认证、请求频率限制和 Gzip 开关等,所有指令需写在对应 server 块内以实现覆盖与隔离。

按域名设置独立的 IP 访问控制
在每个 server 块中直接使用 allow/deny,互不影响:
-
www.example.com 只允许公司内网访问:
allow 192.168.10.0/24;<br>deny all;
-
api.example.com 允许特定运维 IP + 拒绝已知恶意段:
allow 203.0.113.5;<br>allow 203.0.113.12;<br>deny 198.51.100.0/24;<br>deny all;
注意:deny/allow 的顺序重要,匹配到第一条即生效;未显式声明的 IP 默认按最后一条规则处理。
为不同虚拟主机启用独立的用户认证
每个 server 可挂载不同的密码文件,实现账号体系隔离:
-
后台管理域名 admin.example.com:
auth_basic "Admin Area";<br>auth_basic_user_file /usr/local/nginx/conf/.htpasswd-admin;
-
客户门户 portal.example.com 使用另一套账号:
auth_basic "Customer Portal";<br>auth_basic_user_file /usr/local/nginx/conf/.htpasswd-portal;
需提前用 htpasswd 工具生成各自密码文件,并确保 Nginx 进程有读取权限(chown nginx:nginx,chmod 400)。
各虚拟主机差异化限流与压缩策略
借助 server 块作用域,可精细调控资源行为:
-
静态站点 www.example.com 启用 Gzip 并限速:
gzip on;<br>gzip_types text/html text/css application/javascript;<br>limit_req zone=www burst=20 nodelay;
-
API 服务 api.example.com 关闭压缩、严格限流:
gzip off;<br>limit_req zone=api burst=5 delay=1;
限流 zone 名称必须唯一(如 zone=www、zone=api),并在 http 块中预先定义好对应的 limit_req_zone。
基于端口或 IP 的虚拟主机同样适用
无论是 listen 8080 的内部监控页,还是 listen 192.168.1.100:80 的专用服务,只要它们是独立 server 块,就都能拥有专属访问规则:
- 端口 8080 的健康检查页可设为:
allow 127.0.0.1; deny all; - 绑定私有 IP 的管理接口可加:
satisfy any;<br>allow 10.0.0.0/8;<br>auth_basic "Internal Auth";
所有策略均以 server 块为边界,天然隔离,无需额外判断逻辑。


















