nginx配置IP白名单的详细步骤
目录
- 1、添加IP白名单文件
- 2、配置nginx.conf
- 3、编辑白名单的提示导航页面
- 补充:添加白名单后nginx报错:
- 总结
分析nginx访问日志,有哪些IP访问过nginx。
命令参考:awk '{print $1}' logs/access.log | sort | uniq -c | sort -nr -k1
输出的效果案例:
1053 192.168.3.15
893 192.168.3.10
818 192.168.0.8
1、添加IP白名单文件
在nginx目录的 conf 中添加文件 ip.conf,注意白名单文件不用添加任何注释,可以有空行
vi ip.conf
192.168.3.11 1;
192.168.3.10 1;
192.168.0.112 1;
2、配置nginx.conf
编辑http节点:
http {
# ...
# geo IP whitelist
geo $remote_addr $ip_whitelist {
default 0;
include ip.conf;
}
# ...
}
编辑server节点:
server {
listen 80;
# ...
# IP whitelist
set $whitelist_flag 1;
if ( $ip_whitelist != 1 ) {
set $whitelist_flag "${whitelist_flag}0";
}
if ( $request_uri !~* '/warn_navigate_page' ) {
set $whitelist_flag "${whitelist_flag}0";
}
if ( $whitelist_flag = "100" ) {
#return 403;
rewrite ^(.*)$ $scheme://$host:$server_port/warn_navigate_page break; #白名单的提示页面
}
# ...
}
也可以在location节点中编辑,示例:
编辑location节点:
location /test {
proxy_pass http://IP/test;
# ...
# IP whitelist
set $whitelist_flag 1;
if ( $ip_whitelist != 1 ) {
set $whitelist_flag "${whitelist_flag}0";
}
if ( $request_uri !~* '/warn_navigate_page' ) {
set $whitelist_flag "${whitelist_flag}0";
}
if ( $whitelist_flag = "100" ) {
#return 403;
rewrite ^(.*)$ $scheme://$host:$server_port/warn_navigate_page break; #白名单的提示页面
}
# ...
}
添加导航的提示页 /warn_navigate_page
server {
listen 80;
# ...
# 白名单的提示导航页面
location /warn_navigate_page {
root /home/java/nginx/bizapp/warn_navigate_page;
index warn_navigate_page.html warn_navigate_page.htm;
rewrite ^(.*)$ /warn_navigate_page.html break;
}
}
3、编辑白名单的提示导航页面
在 /home/java/nginx/bizapp/warn_navigate_page 中编辑页面warn_navigate_page.html
参考:
系统通知
【通知公告】
尊敬的用户您好,系统已不提供IP地址直接访问,请联系管理员添加白名单。互联网的域名访问地址:跳转https://www.baidu.com
预计效果图

补充:添加白名单后nginx报错:
nginx: [warn] low address bits of 45.11.55.132/28 are meaningless in /opt/openresty/nginx/conf/public/white.conf:69 nginx: [warn] low address bits of 12.70.12.195/28 are meaningless in /opt/openresty/nginx/conf/public/white.conf:70
解决方法:
错误原因是因为子网划分错误,比如 45.11.55.132/28,每个子网有16个ip,所以起始ip一定要是16的倍数,
这个子网应该写成这样45.11.55.128/28,修改完毕后再reload nginx就不会报错了。
您可能感兴趣的文章
- 02-02hadoop动态增加和删除节点方法介绍
- 02-02干货 | Linux新手入门好书推荐
- 02-02linux系统下MongoDB单节点安装教程
- 02-02Linux下nginx生成日志自动切割的实现方法
- 02-02Centos 6中编译配置httpd2.4的多种方法详解
- 02-02CentOS7 下安装telnet服务的实现方法
- 02-02分布式Hibernate search详解
- 02-02Hadoop对文本文件的快速全局排序实现方法及分析
- 02-02CentOS6.3添加nginx系统服务的实例详解
- 02-02Hadoop编程基于MR程序实现倒排索引示例


阅读排行
推荐教程
- 12-07Tomcat启动报错:严重: Unable to process Jar entry [m
- 12-07解决tomcat启动报错:一个或多个listeners启动失败问题
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07Tomcat配置IPV6的实现步骤
- 12-07tomcat启动报错jar not loaded的问题
- 02-02CentOS7 下安装telnet服务的实现方法
- 12-11docker存储目录迁移示例教程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-07Tomcat部署war包并成功访问网页详细图文教程
- 01-07windows server 2008安装配置DNS服务器




