做网站比较好的数字,物联网小程序开发,网站关键词如何做竞价,wordpress贴心插件一、Nginx配置访问IP白名单
有时部署的应用需要只允许某些特定的IP能够访问#xff0c;其他IP不允许访问#xff0c;这时#xff0c;就要设置访问白名单#xff1b;
设置访问白名单有多种方式#xff1a; 1.通过网络防火墙配置#xff0c;例如阿里云/华为云管理平台 2.…一、Nginx配置访问IP白名单
有时部署的应用需要只允许某些特定的IP能够访问其他IP不允许访问这时就要设置访问白名单
设置访问白名单有多种方式 1.通过网络防火墙配置例如阿里云/华为云管理平台 2.通过服务器防火墙配置,iptables 3.通过nginx配置访问分发限制 4.通过nginx的allow、deny参数进行访问限制本文使用此方案
Nginx白名单使用allow和deny来控制该配置可以添加在http段也可以server、location中
如果想增加允许访问的IP范围例如10.10.10.0~10.10.10.255需要使用CIDR格式表示你的IP范围在Nginx中默认仅允许IP地址和CIDR格式CIDR转IPv4网站https://www.ipaddressguide.com/cidr
示例一 nginx所有代理生效仅允许192.168.1.6的访问其他所有IP均不能访问。
http {
......
allow 192.168.1.6;
deny all;
......
}
示例二 nginx某个端口server代理生效仅允许192.168.1.6和192.168.1.6的访问其他所有IP均不能访问。
server {
......
allow 192.168.1.6;
allow 192.168.1.8;
deny all;
......
}
示例三 nginx某个location代理生效仅允许192.168.1.6和192.168.2.0~192.168.2.255网段的访问其他所有IP均不能访问。
location /screen {
......
allow 192.168.1.6;
allow 192.168.2.0/24;
deny all;
......
}
修改完成后重载nginx配置文件生效sbin/nginx -s reload
注意如果本机也需要访问这个代理记得加上allow 127.0.0.1;
配套操作互联网上一般访问端client的IP都不是本机的局域网IP而是运营商的出口IP需要注意
查询方法百度或者搜狗输入关键词“IP”然后点击“IP地址查询”相关搜索结果即可查询到自己的IP。 不确定或者不能访问外网的话就在nginx的报错日志里找logs/error.log能找到访问此nginx的IP。
二、Nginx添加白名单的四种方式
1添加防火墙白名单
针对nginx域名配置所启用的端口(比如80端口)在iptables里做白名单比如只允许100.110.15.16、100.110.15.17、100.110.15.18访问.但是这样就把nginx的所有80端口的域名访问都做了限制范围比较大 2利用$remote_addr参数进行访问的分发限制
如果只是针对nginx下的某一个域名进行访问的白名单限制那么可以在nginx的配置文件里进行设置如下
##白名单设置只允许下面三个来源ip的客户端以及本地能访问该站。主要是下面这三行if ($remote_addr !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {rewrite ^.*$ /maintence.php last;} 3也可以使用$http_x_forwarded_for参数进行访问的分发限制如下
##白名单设置只允许下面三个来源ip的客户端以及本地能访问该站。if ($http_x_forwarded_for !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {rewrite ^.*$ /maintence.php last;} 4还可以利用nginx的allow、deny参数进行访问限制
##白名单设置只允许下面三个来源ip的客户端以及本地能访问该站。allow 100.110.15.16;allow 100.110.15.17;allow 100.110.15.18;allow 127.0.0.1;deny all; 三、Nginx根据用户IP设置访问跳转
第一种方法
根据$remote_addr客户端IP地址判断判断成功即返回301跳转可以写正则如果有大量不规则IP就很头疼了。
if ($remote_addr 192.168.1.123) {return 301 https://blog.whsir.com;
}
第二种方法
nginx通过lua实现这方法是孔大神给的将需要做301跳转的IP直接写到/tmp/ip文件中支持网段一行一个添加后不需要重启nginx即时生效。
注意nginx要编译lua模块才可以使用我的whsir一键包nginx已集成lua。
rpm -ivh http://mirrors.whsir.com/centos/whsir-release-centos.noarch.rpmyum install wnginx -y
set_by_lua $info local opt ngx.var.remote_addrlocal file io.popen(ip ..opt.. ;if grep -q $ip /tmp/ip;then echo $ip; exit 0;fi ; for net in $(grep / /tmp/ip);do [ $(ipcalc -n $ip/${net#*/}) $(ipcalc -n $net) ] echo $ip break; done)content1 file:read(*l)return content1;if ( $info $remote_addr) {return 301 https://blog.whsir.com;}
四、nginx配置IP白名单的详细步骤
分析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 whitelistgeo $remote_addr $ip_whitelist {default 0;include ip.conf;}# ...}
编辑server节点
server {listen 80;# ...# IP whitelistset $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 whitelistset $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
参考
!DOCTYPE htmlhtml langenheadmeta charsetutf-8meta nameviewport contentwidthdevice-width,initial-scale1.0,maximum-scale1.0,user-scalablenometa contentyes nameapple-mobile-web-app-capablemeta contentblack nameapple-mobile-web-app-status-bar-stylemeta contenttelephoneno nameformat-detectionmeta contentemailno nameformat-detectiontitle系统通知/titlestyle typetext/cssbody {background: url(https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png) no-repeat;background-size: 100% 100%;background-attachment: fixed;}/style/headbodydivpre 【通知公告】尊敬的用户您好系统已不提供IP地址直接访问请联系管理员添加白名单。互联网的域名访问地址a hrefhttps://www.baidu.com跳转https://www.weidianyuedu.com/a/pre/div/bodyscript typetext/javascript/script/html 参考https://blog.csdn.net/wanzhong11/article/details/131396910
https://blog.csdn.net/hdxx2022/article/details/132020861
https://blog.whsir.com/post-4430.html