我正在尝试阻止通过 Nginx 访问部分路径,除非源 IP 在指定范围内。
我思考我已经通过多次反复尝试解决了这个问题,但是当路径包含查询字符串时,我似乎遇到了麻烦:
不应该起作用(除非在指定的 IP 范围内):
/登录
/登录/
应该有效(甚至公开):
/登录/其他
/[电子邮件保护]&类型=专业
当前位置区块:
location ~ ^/(login|login/)$ {
allow 10.0.102.0/24;
deny all;
return 403;
}
欢迎提出任何建议,谢谢!
答案1
以下配置仅允许从 IP 地址范围 192.168.1.0/24 和 192.168.2.0/24 访问对 /login URL 路径的传入请求:
server {
...
location /login {
if ($remote_addr ~ "^192\.168\.1\.\d{1,3}$") {
allow all;
}
if ($remote_addr ~ "^192\.168\.2\.\d{1,3}$") {
allow all;
}
deny all;
}
...
}