相关模块
- http_access_module # 基于IP的访问控制
语法
1 | 语法:allow address | CIDR | unix:| all; |
1 | 语法:deny address | CIDR | unix:| all; |
配置实例
以admin.html开头的页面不允许222.128.189.17访问,可以允许其他访问(~ ^ 代表匹配以admin.html开头的页面)
1
2
3
4
5
6location ~ ^/admin.html {
root /opt/app/code;
deny 222.128.189.17;
allow all;
index index.html index.htm;
}只允许222.128.189.0这个网段来访问,其他的都阻止
1
2
3
4
5
6location ~ ^/admin.html {
root /opt/app/code;
allow 222.128.189.17;
deny all;
index index.html index.htm;
}
模块的局限性
使用http_access_module,中间可能存在代理的情况,如果中间有代理,http_access_module获取到的remote_addr是代理的IP,那么是这么做不准确的
局限的解决方式
- 采用别的HTTP头信息控制访问,如:HTTP_X_FORWARD_FOR
- 结合geo模块
- 通过HTTP自定义变量传递
HTTP_X_FORWARD_FOR介绍
为了解决上面的问题,引入了 http_x_forwarded_for【但是x_forwarded_for是一种格式规范,不一定所有的CDN服务商都有,且是http头信息,存在被修改的可能,所以虽然能解决http_access_module的问题,但是并不理想。】
http_x_forwarded_for的构成:第一个是Client IP,后面的就是Proxy IP