# nginx

# 高可用参考链接
https://blog.csdn.net/zcxey2911/article/details/105593005/

ps -ef | grep nginx

vim /etc/nginx/nginx.conf /usr/sbin/nginx -t /usr/sbin/nginx -s reload

#重启nginx cd /usr/local/docker/dnmp docker-compose restart s1

# 拦截策略

# 1.ip策略(推荐)

优点: 配置简单, 效果最好 ,防扫描器 ,防CC ,防接口刷子,可以防止90%的互联网攻击 缺点: 可能误伤

limit_req_zone $binary_remote_addr zone=api_limit:20m rate=10r/s; 参数解释: limit_req_zone 定义限流规则 $binary_remote_addr 以客户端IP为维度统计 zone=api_limit 限流规则名称:api_limit 20m 分配20MB内存存储IP统计数据 rate=10r/s 每个IP每秒最多10个请求

启用限流 limit_req zone=api_limit burst=20 nodelay; 参数解释: limit_req 启用限流规则 zone=api_limit 限流规则名称:api_limit burst=20 允许突发20个请求 nodelay 立即处理

#
http {

    limit_req_zone $binary_remote_addr zone=api_limit:20m rate=10r/s;

    server {

        location / {
            # 启用限流
            limit_req zone=api_limit burst=20 nodelay;

            proxy_pass http://yh-api;
        }
    }
}

# 公司ip限流

# 放在 server 外面
limit_req_zone $binary_remote_addr zone=api_limit:20m rate=20r/s;

server {

    listen 80;
    server_name api.test.com;

    location / {

        # 启用限流
        limit_req zone=api_limit burst=50 nodelay;

        proxy_pass http://yh-api;
    }
}

# 2.攻击特征拦截(推荐)

优点:设置简单,CPU消耗极低,无误伤

# 拦截数据库备份、压缩包扫描
location ~* ^/api/(v1|v3)/.*\.(sql|sql\.gz|sql\.bz2|tar|tgz|gz|zip|rar|7z|bak)$ {
    access_log off;
    return 444;
}

# 拦截常见敏感文件扫描
location ~* (pg_dump|backup|dump|database|db_backup|seeds|tls|env) {
    access_log off;
    return 444;
}

# 3.连接数限制

优点: 防大量长连接,防连接耗尽 缺点: 对普通扫描器效果一般

limit_conn_zone $binary_remote_addr zone=addr:20m; 参数解释: limit_conn_zone 创建一个连接统计池 $binary_remote_addr 名称:addr zone=addr:20m; 大小:20MB

limit_conn addr 20; 参数解释: limit_conn 启用限流规则 addr 名称:addr 20 大小:20MB

http {

    limit_conn_zone $binary_remote_addr zone=addr:20m;

    server {

        location / {

            limit_conn addr 20;

            proxy_pass http://yh-api;
        }
    }
}

# 4.Gateway层限流(推荐)

通过Sentinel做限流

优点: 细粒度, 按接口限流 ,按用户限流 缺点: 请求已经到Gateway了 已经消耗资源

# 5.自动封禁恶意IP(推荐) 未测试

连续访问10次,自动拉黑1小时 优点: 自动化 ,长期有效 缺点: 需要维护规则

 安装 Fail2Ban:
yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban

# 6.黑名单 User-Agent

优点: 简单 ,见效快 缺点: 很容易伪造

if ($http_user_agent ~* "(sqlmap|masscan|zgrab|python)") {
    return 444;
}

# 7.阿里云安全组限制

可以限制固定IP,对于互联网扫描器效果一般。