磁力网站怎么做深圳网站建设类公司
2026/3/26 20:02:44 网站建设 项目流程
磁力网站怎么做,深圳网站建设类公司,如何学网页设计,怎么在微视上发视频赚收益做过Web服务的都知道#xff0c;接口裸奔是找死。 不设防的后果#xff1a;羊毛党刷爆优惠券、爬虫拖垮服务器、CC攻击搞瘫业务。 整理一下Nginx层面的防护方案#xff0c;都是生产环境验证过的配置。 一、限流基础 Nginx有两个核心限流模块#xff1a; ngx_http_limi…做过Web服务的都知道接口裸奔是找死。不设防的后果羊毛党刷爆优惠券、爬虫拖垮服务器、CC攻击搞瘫业务。整理一下Nginx层面的防护方案都是生产环境验证过的配置。一、限流基础Nginx有两个核心限流模块ngx_http_limit_req_module限制请求速率ngx_http_limit_conn_module限制连接数1.1 限制请求速率http { # 定义限流区域 # $binary_remote_addr按客户端IP限流 # zonereq_limit:10m共享内存区域名和大小 # rate10r/s每秒10个请求 limit_req_zone $binary_remote_addr zonereq_limit:10m rate10r/s; server { location /api/ { # 应用限流 # burst20允许突发20个请求 # nodelay突发请求不延迟处理 limit_req zonereq_limit burst20 nodelay; proxy_pass http://backend; } } }参数解释rate10r/s平均每秒10个请求即每100ms一个burst20桶大小允许突发20个请求nodelay突发请求立即处理不排队等待1.2 限制连接数http { # 按IP限制连接数 limit_conn_zone $binary_remote_addr zoneconn_limit:10m; server { location /download/ { # 每个IP最多10个连接 limit_conn conn_limit 10; # 限制每个连接的速度 limit_rate 1m; # 1MB/s } } }适用场景下载服务、视频流媒体。二、分场景限流2.1 登录接口防暴力破解http { # 登录接口严格限流 limit_req_zone $binary_remote_addr zonelogin_limit:10m rate1r/s; server { location /api/login { limit_req zonelogin_limit burst5 nodelay; # 超限返回429 limit_req_status 429; proxy_pass http://backend; } } }每秒只允许1次登录请求防止暴力破解。2.2 短信验证码防刷http { # 验证码接口更严格 limit_req_zone $binary_remote_addr zonesms_limit:10m rate1r/m; server { location /api/sms/send { # 每分钟1次 limit_req zonesms_limit burst3; proxy_pass http://backend; } } }2.3 搜索接口防爬虫http { # 搜索接口中等限流 limit_req_zone $binary_remote_addr zonesearch_limit:10m rate5r/s; server { location /api/search { limit_req zonesearch_limit burst10 nodelay; proxy_pass http://backend; } } }三、CC攻击防护CC攻击就是用大量代理IP发请求单IP限流不够用。3.1 请求频率并发连接双重限制http { limit_req_zone $binary_remote_addr zonecc_req:10m rate30r/s; limit_conn_zone $binary_remote_addr zonecc_conn:10m; server { # 请求频率限制 limit_req zonecc_req burst50 nodelay; # 并发连接限制 limit_conn cc_conn 50; # 超限状态码 limit_req_status 503; limit_conn_status 503; } }3.2 基于User-Agent过滤server { # 封禁空UA和常见爬虫UA if ($http_user_agent ) { return 403; } if ($http_user_agent ~* python|curl|wget|scrapy|httpclient) { return 403; } # 封禁特定UA if ($http_user_agent ~* MJ12bot|AhrefsBot|SemrushBot) { return 403; } }3.3 基于Referer过滤server { location /api/ { valid_referers none blocked server_names *.example.com; if ($invalid_referer) { return 403; } } }3.4 cookie验证server { location / { # 检查是否有验证cookie if ($cookie_verified ! yes) { # 返回验证页面通过JS设置cookie后重定向 return 302 /verify.html; } proxy_pass http://backend; } }这个方法可以过滤掉不执行JS的简单爬虫。四、IP黑白名单4.1 黑名单http { # 加载黑名单文件 geo $blocked_ip { default 0; include /etc/nginx/blacklist.conf; } server { if ($blocked_ip) { return 403; } } }黑名单文件# /etc/nginx/blacklist.conf 1.2.3.4 1; 5.6.7.0/24 1;4.2 白名单http { geo $whitelist { default 0; 10.0.0.0/8 1; # 内网 192.168.0.0/16 1; # 内网 } server { location /admin/ { if ($whitelist 0) { return 403; } proxy_pass http://backend; } } }4.3 动态封禁配合fail2ban实现自动封禁# /etc/fail2ban/filter.d/nginx-cc.conf[Definition]failregex^HOST.*(GET|POST).* HTTP.*(429|503)ignoreregex# /etc/fail2ban/jail.d/nginx-cc.conf[nginx-cc]enabledtrueporthttp,https filternginx-cc logpath/var/log/nginx/access.log maxretry100findtime60bantime360060秒内触发100次429/503就封禁1小时。五、实战配置模板综合以上方案的完整配置http { # 限流区域定义 limit_req_zone $binary_remote_addr zoneglobal_limit:20m rate50r/s; limit_req_zone $binary_remote_addr zoneapi_limit:10m rate20r/s; limit_req_zone $binary_remote_addr zonelogin_limit:10m rate1r/s; limit_conn_zone $binary_remote_addr zoneconn_limit:10m; # 黑名单 geo $blocked_ip { default 0; include /etc/nginx/blacklist.conf; } # 白名单 geo $whitelist { default 0; 10.0.0.0/8 1; 192.168.0.0/16 1; } server { listen 80; server_name example.com; # 黑名单拦截 if ($blocked_ip) { return 403; } # 空UA拦截 if ($http_user_agent ) { return 403; } # 全局限流 limit_req zoneglobal_limit burst100 nodelay; limit_conn conn_limit 100; # API接口限流 location /api/ { limit_req zoneapi_limit burst30 nodelay; proxy_pass http://backend; } # 登录接口严格限流 location /api/login { limit_req zonelogin_limit burst5 nodelay; limit_req_status 429; proxy_pass http://backend; } # 静态资源不限流 location /static/ { expires 7d; add_header Cache-Control public, immutable; } # 管理后台白名单 location /admin/ { if ($whitelist 0) { return 403; } proxy_pass http://backend; } } }六、监控与告警光限流不够还要能看到发生了什么。6.1 日志格式log_format detailed $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $request_time $upstream_response_time $limit_req_status; access_log /var/log/nginx/access.log detailed;6.2 实时统计# 统计429状态码tail-f /var/log/nginx/access.log|grep 429 |wc-l# 按IP统计请求数awk{print$1}/var/log/nginx/access.log|sort|uniq-c|sort-rn|head-206.3 自定义限流日志location /api/ { limit_req zoneapi_limit burst30 nodelay; # 限流日志 limit_req_log_level warn; }被限流的请求会记录到error.loglimiting requests, excess: 30.234 by zone api_limit七、压测验证配置完要验证效果# 用ab压测ab -n1000-c100http://example.com/api/test# 用wrk压测wrk -t4 -c200 -d30s http://example.com/api/test观察正常请求能过超限请求返回429或503服务器资源没被打满八、远程管理我们有几个边缘节点部署了Nginx做CDN分布在不同城市。之前更新配置很麻烦现在用星空组网把所有节点组到一起SSH直连更新配置很方便。总结Nginx防护策略攻击类型防护方案核心配置单IP刷接口请求速率限制limit_req下载带宽滥用连接数速度限制limit_conn limit_rate暴力破解严格限流rate1r/sCC攻击多层防护限流UA过滤黑名单爬虫UAReferer过滤if判断防护策略要分层第一层IP黑名单第二层速率限制第三层行为判断第四层验证码业务层别等被攻击了才想起来加防护。有其他防护方案欢迎分享~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询