努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • 运维基础

    • nginx 安装
    • nginx-conf常用示例
    • rsync 服务pull与push
    • linux时间同步
    • 系统参数优化
    • ruby版本升级
    • fpm定制rpm
    • php7_X安装
    • iptables规则
    • tcpdump抓包
    • 公司部署Pritunl-VPN
    • 需求shell脚本记录
    • openldap安装配置
    • Ldap集成常用开源服务示例图
    • ansible基础
    • ansible进阶playbook与Roles
    • centos安装python3
    • Firewalld防火墙
    • Linux配置jdk
    • ubuntu安装ftp
    • minio分布式文件存储
    • windows安装openssh
    • centos7安装系统检测不到网卡
    • docker运行一个bind9和常用的网络命令
    • nginx禁用真实IP
      • nginx禁用真实IP
  • 监控

  • 日志系统

  • 安全记录

//
  • 运维
  • 运维基础
yangfk
2024-10-15

nginx禁用真实IP

//

# nginx禁用真实IP

某些代理情况,nginx获取到的 "$http_x_forwarded_for" 才是真实IP,而remote_add 获取到的是空值,而这种情况封禁IP可以通过该方式封禁

Nginx配置

# cat /etc/nginx/nginx.conf
http {
    log_format main '$server_name ' '$http_x_forwarded_for' ' $remote_addr ' '$remote_port ' '[$time_local] ' '$request_time ' '$upstream_response_time ' '$status $body_bytes_sent' ' $request $request_body $http_referer ' '"$http_user_agent" ' ' $real_ip ';
    access_log /var/log/nginx/access.log main;

    geo $http_x_forwarded_for $real_ip {
        default "";
        include /etc/nginx/blocked_ip; #后面新建一个封禁IP的文件
    }

    map $real_ip $block {
        default    0;
        "blocked"  1;
    }

----省略----

server {
    listen 80;
    server_name yfklife.cn;

---省略----

    if ($block) {
        return 403;
    }
  }
}
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

把需要封禁的IP写在这个文件里

# cat /etc/nginx/blocked_ip
120.46.194.216/32      "blocked";
1
2

参数说明

1.获取真实IP "http_x_forwarded_for"
2.定义了一个名为 $real_ip 的变量,通过$http_x_forwarded_for 的值来定义 $real_ip 地址,封禁的IP写入文件:/etc/nginx/blocked_ip
3.通过 geo 块对真实 $block 进行判断,如果属于 120.46.194.216/32 IP或者网段,则将其设置为字符串 "blocked",否则将其设置为默认值 ""
4.最后使用 map 块将 $real_ip 映射到一个变量 $block,如果 $real_ip 被设置为 "blocked",则将 $block 设置为 1,否则设置为 0
5.在server 层,对 $block 变量判断,如果为1,则返回403
//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2024/11/20, 10:16:50
docker运行一个bind9和常用的网络命令
zabbix 部署

← docker运行一个bind9和常用的网络命令 zabbix 部署→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//