Nginx限制IP访问及获取客户端realip实战
做网站时经常会用到remote_addr
和x_forwarded_for
这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了,需要调整一些配置。Nginx作为web服务器
时需要根据源IP地址(remote_addr)进行某些限制,但是假如前端是负载均衡的话,Nginx获得的地址永远是负载均衡的内网地址,虽然可以通过设置x_forwarded_for获取到真实的源IP地址但
是无法针对这个地址进行一些权限设置,及Nginx获取到的remote_addr是没有多大意义的,可以通过nginx的realip模块,让它使用x_forwarded_for里的值。使用这个模块需要重新编译Nginx,
增加--with-http_realip_module
参数
1,编译安装Nginx
不详述安装过程,编译增加--with-http_realip_module
2,修改配置文件
在http标签添加两行,其中IP地址代表负载均衡器的IP地址
3,查看日志
remote_addr和http_x_forwared_for一样了
4,设置某个页面的访问权限
其中admincp.php页面为后台管理员页面,只有通过拨号到对应的IP地址那台主机才允许访问
否则跳403错误