如何限制IP端口网站主站仅特定IP访问,同时开放/api端点?
需求完全可行,两种实现方案如下
方案一:Nginx反向代理(通用方案,无需云服务)
直接在后端服务器部署Nginx,通过路径规则配置实现IP限制:
- 安装Nginx后,修改配置文件(通常为
/etc/nginx/nginx.conf或/etc/nginx/conf.d/your-site.conf) - 添加如下server配置块:
server { listen 80; server_name 01.235.06.30; # 替换为你的服务器公网IP # 限制根路径仅特定IP访问 location / { allow 192.168.1.100; # 替换成允许的特定IP,可添加多行allow规则 allow 10.0.0.0/24; # 支持网段格式 deny all; proxy_pass http://127.0.0.1:7000; # 转发到后端服务的7000端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 开放/api路径给所有用户 location /api { allow all; proxy_pass http://127.0.0.1:7000/api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 测试配置语法:
nginx -t,确认无误后重启Nginx:systemctl restart nginx - 完成后,
http://01.235.06.30会被IP限制,http://01.235.06.30/api可正常访问
方案二:AWS Application Load Balancer(云服务方案)
若使用AWS环境,可通过ALB的规则配置实现:
- 创建公网访问的Application Load Balancer,监听80端口(或需求端口)
- 创建目标组,目标类型选实例,端口设为7000,关联你的后端服务器
- 给ALB监听器添加两条规则:
- 第一条规则:路径匹配为
/,添加「源IP」条件,输入允许的IP/网段,动作设为转发到目标组 - 第二条规则:路径匹配为
/api/*,无需IP条件,直接转发到目标组
- 第一条规则:路径匹配为
- 调整后端服务器安全组,仅允许ALB的安全组访问7000端口;ALB安全组开放监听端口给所有用户
- 用户通过ALB公网IP访问时,根路径受IP限制,/api路径完全开放
内容的提问来源于stack exchange,提问作者Veronica Ajisola
相关产品推荐
相关产品推荐

