• 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

    # 分析nginx的access.log出来的,案例
    192.168.3.11 1;
    192.168.3.10 1;
    192.168.0.112 1;
     
    # 自身的业务IP地址
    
    # 其他业务IP地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、配置nginx.conf

    编辑http节点:

    http {
        # ...
        # geo IP whitelist
        geo $remote_addr $ip_whitelist {
           default 0;
           include ip.conf;
        }
     
        # ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    编辑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; #白名单的提示页面
        }
     
        # ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    也可以在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; #白名单的提示页面
                    }
     
        # ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    添加导航的提示页 /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;
                    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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.coma>
            pre>
        div>
    
    body>
    <script type="text/javascript">
    script>
    
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    预计效果图

    在这里插入图片描述

  • 相关阅读:
    js中dom和bom有什么区别
    【学习总结】SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习)
    电机功率计算公式
    助力质量生产,基于目标检测模型MobileNetV2-YOLOv3-Lite实现PCB电路板缺陷检测
    HCIA-MSTP替代技术之链路捆绑(LACP模式)
    【Python】解决类中特性(property)覆盖同名属性(attribute)报错问题
    ESP32 MicroPython UART及小车类构造函数实验⑥
    【随想】闲聊、沟通和谈判
    {案例分析}**市 SA-接通率CCE参数优化报告
    【图解HTTP】|【09】Web的攻击技术
  • 原文地址:https://blog.csdn.net/weixin_44953227/article/details/126227433