使用 NGINX 流控和 fail2ban 防止 CC 攻击
背景知识CC 攻击攻击者通过创建大量请求导致服务器资源耗尽,主要针对特定服务接口,属于实现 DoS 攻击的一种方式(DoS 攻击更多是针对网络端口,而不是具体服务接口)。
NGINX 流控
limit_req_zone:通过“漏桶”算法限制每个 IP 发起的请求频率。
limit_conn_zone:限制每个 IP 发起的连接数。
fail2ban通过匹配服务器日志操作 iptables 来限制客户端网络连接。
实践配置NGINX 部分在 http 部分中配置:
limit_req_zone $binary_remote_addr zone=sym:10m rate=5r/s; limit_conn_zone $binary_remote_addr zone=conn_sym:10m;12
然后在需要流控的 location 部分配置:
limit_req zone=sym burst=5; limit_conn conn_sym 10;12
重启 NGINX 后当有超流客户端请求时将在 NGINX error.log( ...
linux的sudo授权
如果有这样一个需求,linux的其他用户(普通用户)要查看你的日志文件,但是你又不想让他使用其他命令那就要使用sudo了,授权指定用户使用命令了
12### 打开配置文件 这个命令等于 vi /etc/sudoersvisudo
找到下面这行,这行的意思是root用户授权全部命令 1root ALL=(ALL) ALL我们添加了一个用户 chen
12useradd chenpasswd 123456
这就是我们看日志的用户,我们想让他只使用 cat 和 less 命令 (建议加上 /bin/)
1chen ALL=(ALL) /bin/cat,/bin/less
多个命令直接用逗号隔开
我们登录用户chen
使用 sudo -l 看看
12345678Matching Defaults entries for chen on localhost: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_ ...
VMware虚拟机的网络连接方式
VMware虚拟机的网络连接方式桥接模式和主机使用相同的网段,
方便使用,可以和其他系统通讯,
但如果数量多会造成IP地址冲突
NAT模式虚拟机和主机使用不同的网段,
虚拟机与外网连接时使用NAT的方式,
不会造成外部环境的IP地址冲突
仅主机模式虚拟机是独立的主机,
不能访问外网
linux目录结构及作用树状目录文件,/为跟目录
一切介为文件
/bin存放命令
/sbin管理员使用的系统管理程序
/home存放普通用户的主目录
/root超级用户的主目录
/lib系统开机所需要的最基本的动态连接共享库
/lost+found 当系统非法关机时,该目录会存放文件
/etc所有的系统管理所需要的配置文件和子目录
/usr用户的应用程序和文件都存放在该目录下,类似program files
/boot启动linux的核心文件
/proc虚拟的目录,是系统内存的映射,访问这个目录来获取系统的信息(和内核相关
/srvservice,存放一些服务启动后需要提取的数据(和内核相 ...
docker compose 安装MySQL
第一步:首先安装docker 和docker-compose
这里使用快速安装脚本进行安装
1curl -sSL https://get.daocloud.io/docker | sh
第二步:新建/data/mysql目录 data文件是我以后存放所有安装的容器地址
新建一个docker-compose.yml文件夹
1version: '3'services: mysql: image: mysql:5.7 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: chen command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaul ...
linux日志管理(一)
思维导图
先来看看日志存放的路径格式: 设备+日志级别+存放路径
rsyslog配置文件
1vim /etc/rsyslog.conf
配置文件解释
1#### RULES #### # Log all kernel messages to the console.# Logging much else clutters up the screen.#kern.* /dev/console # Log anything (except mail) of level info or higher.# Don't log private authentication messages!*.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access.authpriv.* ...
Vue封装Axios
在vue脚手架中需要封装axios来达到更好使用axios的目的
比如 token 的鉴权,错误处理等
首先我们要在 src目录下创建一个plugins 文件夹
这个文件夹以后就是来存储我们vue项目的一些第三方的配置文件
我们在Plugins目录下创建一个 myAxios.ts的配置文件封装axios
myAxios.ts 文件内容如下
1234567891011121314151617181920212223242526import axios from 'axios' // 创建axios实例。统一配置const service = axios.create({ baseURL: "http://xxx.com, // api的base_url timeout: 15000 // 请求超时时间 // .... 其他信息})// request拦截器service.interceptors.request.use(config => { //... 获取token,存储token 等操作 retur ...
Redis哨兵配置实现服务高可用(1主1从1哨兵)
Redis Sentinel为Redis提供了高可用解决方案。实际上这意味着使用Sentinel可以部署一套Redis,在没有人为干预的情况下去应付各种各样的失败事件。
下面是Sentinel的功能列表:
监控(Monitoring):Sentinel不断的去检查你的主从实例是否按照预期在工作。
通知(Notification):Sentinel可以通过一个api来通知系统管理员或者另外的应用程序,被监控的Redis实例有一些问题。
自动故障转移(Automatic failover):如果一个主节点没有按照预期工作,Sentinel会开始故障转移过程,把一个从节点提升为主节点,并重新配置其他的从节点使用新的主节点,使用Redis服务的应用程序在连接的时候也被通知新的地址。
配置提供者(Configuration provider):Sentinel给客户端的服务发现提供来源:对于一个给定的服务,客户端连接到Sentinels来寻找当前主节点的地址。当故障转移发生的时候,Sentinels将报告新的地址。
前言
主从使用一主一从,然后使用sentinel进行高可用配置,当主服 ...