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

参考:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black" name="apple-mobile-web-app-status-bar-style">
    <meta content="telephone=no" name="format-detection">
    <meta content="email=no" name="format-detection">
    <title>系统通知</title>
    <style type="text/css">
        body {
            background: url(https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png) no-repeat;
            background-size: 100% 100%;
            background-attachment: fixed;
        }
    </style>
</head>

<body>
    <div>
        <pre>                                                                                     【通知公告】
        尊敬的用户您好,系统已不提供IP地址直接访问,请联系管理员添加白名单。互联网的域名访问地址:<a href="https://www.baidu.com">跳转https://www.baidu.com</a>
        </pre>
    </div>

</body>
<script type="text/javascript">
</script>

</html>

预计效果图

补充:添加白名单后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就不会报错了。

总结

到此这篇关于nginx配置IP白名单的文章就介绍到这了,更多相关nginx配置IP白名单内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 网站如何通过nginx设置黑/白名单IP限制及国家城市IP访问限制

    目录 一.黑/白名单IP限制访问配置 1.第一种方法:allow.deny 2:第二种方法,ngx_http_geo_module 3.ngx_http_geo_module 负载均衡(扩展) 二.国家地区IP限制访问 1:安装ngx_http_geoip_module模块 2.下载 IP 数据库 3.配置nginx 总结 一.黑/白名单IP限制访问配置 nginx配置黑白名单有好几种方式,这里只介绍常用的两种方法. 1.第一种方法:allow.deny deny和allow指令属于ngx_ht

  • nginx设置目录白名单、ip白名单的实现方法

    1.设置目录白名单:对指定请求路径不设置限制,如对请求路径为api目录下的请求不做限制,则可写为 server{ location /app { proxy_pass http://192.168.1.111:8095/app; limit_conn conn 20; limit_rate 500k; limit_req zone=foo burst=5 nodelay; } location /app/api { proxy_pass http://192.168.1.111:8095/app

  • 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.15893 192.168.3.10818 192.168.0.8 1.添加IP白名单文件 在nginx目录的 conf 中添

  • Linux服务器配置ip白名单防止远程登录以及端口暴露的问题

    前言 博主用的服务器是阿里云购买的,其实阿里云已经提供安全策略共给我们使用了,但是如果是公司自己的服务器,或者是我们自己的虚拟机等.还是需要自己看看配置好防火墙和如何配置白名单的. 1.阿里云的服务器,本身并没有防火墙,但是我们可以安装一个IPtable防火墙(这里阿里云的服务器系统为Centos),这样的话,就需要防火墙和阿里云网址配置的白名单同时生效才可以喽. 1.服务器防火墙 1.1.下面这个是初始化的防火墙配置 vim /etc/sysconfig/iptables # sample c

  • golang接口IP限流,IP黑名单,IP白名单的实例

    增加中间件 可以选择普通模式和LUA脚本模式,建议选择普通模式,实际上不需要控制的那么精确. package Middlewares import ( "github.com/gin-gonic/gin" "strconv" "time" "voteapi/pkg/app/response" "voteapi/pkg/gredis" "voteapi/pkg/util" ) const

  • nginx配置https加密访问的详细教程

    环境: 1台 CentOS Linux release 7.5.1804 (Core) 关闭防火墙和selinux 开始部署: 1.安装nginx @1.1 依赖安装 yum -y install wget gcc gcc-c++ pcre-devel openssl-devel @1.2 nginx软件包下载 wget http://nginx.org/download/nginx-1.19.0.tar.gz @1.3 解压.编译.安装 [root@localhost ~]# tar xf n

  • 最新IntelliJ IDEA 2021版配置 Tomcat 8.5 的详细步骤

    推荐文章: idea最新激活 idea2021激活码 之前给大家介绍过 IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤 需要的朋友点击查看. 一.官网下载Tomcat 8 1. 选择64位的Tomcat 8 2.下载到本地 3.解压 4.解压后目录结构如下 二.打开IDEA 创建一个web模块 1.创建一个maven Web项目 2.项目名及路径 3.检查maven 本地仓库以及版本,没问题即可完成创建 三.IntelliJ IDEA2021 配置Tomcat 8.

  • nginx配置多个前端项目实现步骤

    最近一台服务器要配置多个前端项目,当然前后端分离就需要nginx来配置了. 单个项目还好说,如下修改nginx的nginx.conf配置文件 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /usr/local/nginx/logs/nginx.pid; events { worker

  • php实现ip白名单黑名单功能

    这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于:api来源限制,访问限制等. 复制代码 代码如下: /**  * 安全IP检测,支持IP段检测  * @param string $ip 要检测的IP  * @param string|array $ips  白名单IP或者黑名单IP  * @return boolean true 在白名单或者黑名单中,否则不在  */ function is_safe_ip($ip="",$ips="&q

  • nginx+uwsgi启动Django项目的详细步骤

    当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uwsgi+django是我们常用的django部署方式.nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量:uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态

随机推荐