# ============================================================ # Nginx IP 访问控制配置示例 # ============================================================ # # 功能说明: # - IP/CIDR 白名单和黑名单 # - 基于地理位置的访问控制 # - 可信代理配置 # # Lolly 对应配置: # server: # security: # access: # allow: ["10.0.0.0/8", "192.168.0.0/16"] # deny: ["192.168.100.0/24"] # default: "allow" # 默认策略(allow 或 deny) # trusted_proxies: ["10.0.0.0/8"] # 可信代理 CIDR # ============================================================ server { listen 80; server_name access.example.com; # 访问控制配置 # Lolly 对应: security.access 配置块 # 白名单模式(只允许特定 IP) location /admin { allow 10.0.0.0/8; # 内网 allow 192.168.0.0/16; # VPN allow 127.0.0.1; # 本地 deny all; # 拒绝其他 proxy_pass http://admin-backend:8080; } # 黑名单模式(拒绝特定 IP) location /api { deny 192.168.100.0/24; # 拒绝特定子网 deny 10.0.50.50; # 拒绝特定 IP allow all; # 允许其他 proxy_pass http://api-backend:8080; } # 混合模式(白名单 + 黑名单) location /sensitive { allow 10.0.0.0/8; deny 10.0.50.0/24; # 在白名单内排除 deny all; proxy_pass http://backend:8080; } # 访问控制错误页面 error_page 403 = @access_denied; location @access_denied { default_type application/json; return 403 '{"error": "Access denied"}'; } } # 基于地理位置的访问控制(需要 GeoIP 模块) http { geoip_country /usr/share/GeoIP/GeoIP.dat; # 国家黑名单 map $geoip_country_code $allowed_country { default yes; CN no; # 拒绝中国(示例) RU no; # 拒绝俄罗斯(示例) } server { listen 80; server_name geo.example.com; if ($allowed_country = no) { return 403; } location / { proxy_pass http://backend:8080; } } } # 可信代理配置(用于 X-Forwarded-For 解析) http { # 设置可信代理 # Lolly 对应: security.access.trusted_proxies set_real_ip_from 10.0.0.0/8; set_real_ip_from 172.16.0.0/12; set_real_ip_from 192.168.0.0/16; set_real_ip_from 127.0.0.1; # 使用哪个 Header 获取真实 IP real_ip_header X-Forwarded-For; # 或使用 X-Real-IP # real_ip_header X-Real-IP; # 递归搜索(从最后一个可信代理往前找) real_ip_recursive on; server { listen 80; server_name proxy.example.com; location /api { # $remote_addr 现在是真实客户端 IP proxy_pass http://backend:8080; proxy_set_header X-Real-IP $remote_addr; } } } # IP 访问控制说明: # # 1. 规则顺序: # - 按配置顺序匹配 # - 首次匹配生效 # - allow/deny 可混合使用 # # 2. CIDR 格式: # - 192.168.1.0/24 表示 192.168.1.0-255 # - 10.0.0.0/8 表示整个 10.x.x.x 段 # - 127.0.0.1 单个 IP # # 3. 可信代理: # - 在负载均衡器后需要配置 # - 从 X-Forwarded-For 提取真实 IP # - 防止 IP 伪造攻击 # # 4. Lolly 配置: # - allow: 白名单列表 # - deny: 黑名单列表 # - default: 默认策略 # - trusted_proxies: 可信代理 CIDR