当前位置: 首页 > news >正文

wordpress 启动流程抖音seo

wordpress 启动流程,抖音seo,郓城做网站公司,网站设计的开发工具和环境在现代 Web 应用中#xff0c;针对敏感接口#xff08;如短信验证码、登录接口等#xff09;的访问次数限制至关重要。通过设置合理的限流策略#xff0c;可以有效防止接口滥用#xff0c;避免过多的资源消耗#xff0c;并提升安全性。本文将通过 Nginx 和 Flask-Limiter…在现代 Web 应用中针对敏感接口如短信验证码、登录接口等的访问次数限制至关重要。通过设置合理的限流策略可以有效防止接口滥用避免过多的资源消耗并提升安全性。本文将通过 Nginx 和 Flask-Limiter 为 Flask 应用实现 IP 级别的限流同时确保限流基于客户端的真实 IP 地址而非内网地址如 172.17.0.1。 1. 使用 Nginx 作为反向代理 Nginx 通常作为 Web 应用的反向代理接收来自客户端的请求并将其转发到后端的应用程序如 Flask。由于 Nginx 在中间充当代理角色后端应用获取到的可能是 Nginx 或 Docker 容器的内网 IP如 172.17.0.1因此获取客户端真实 IP 就显得非常重要。 Nginx 配置中的关键参数 我们可以通过一些配置将客户端的真实 IP 地址传递给 Flask 应用 # 重定向 HTTP 到 HTTPS server {listen 80;server_name example.com;return 301 https://$host$request_uri; }# 处理 HTTPS 请求 server {listen 443 ssl http2;server_name example.com;# SSL 证书配置ssl_certificate /path/to/your/fullchain.pem;ssl_certificate_key /path/to/your/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers EECDHAESGCM:EECDHCHACHA20:!aNULL:!MD5:!DSS;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security max-age31536000 always;# 反向代理到 Flask 应用的 5100 端口location / {proxy_pass http://127.0.0.1:5100; # 将请求转发到 Flaskproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 日志配置可选access_log /path/to/log/access.log;error_log /path/to/log/error.log; }主要参数解释 proxy_pass: 将请求转发到后端的 Flask 应用通常监听在 127.0.0.1:5100 端口。proxy_set_header Host $host: 将客户端请求的主机名传递给后端应用。proxy_set_header X-Real-IP $remote_addr: 传递客户端的真实 IP 地址给后端应用。$remote_addr 是直接连接到 Nginx 的客户端 IP通常是原始客户端的 IP。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for: 将经过的代理链包括客户端真实 IP传递给后端应用。这个头通常包含客户端的真实 IP 地址。proxy_set_header X-Forwarded-Proto $scheme: 传递请求使用的协议HTTP 或 HTTPS给后端应用。 避免内网 IP 地址 172.17.0.1 如果您的 Flask 应用运行在 Docker 容器中而 Nginx 也运行在同一服务器上后端 Flask 应用接收到的 IP 可能是 172.17.0.1这是 Docker 内网的默认网关地址。这个地址会导致所有请求都被认为来自同一个 IP从而错误地进行限流。 通过上述 Nginx 配置中的 X-Forwarded-For 头部我们可以将客户端的真实 IP 地址传递给 Flask避免使用 Docker 内部的 IP如 172.17.0.1进行限流。 2. 使用 Flask-Limiter 实现限流 Flask-Limiter 是一个非常方便的库用于限制 Web 应用中的接口访问次数。我们可以结合 Nginx 的配置通过 X-Forwarded-For 获取到真实的客户端 IP基于 IP 实现限流。 安装 Flask-Limiter 首先确保 Flask-Limiter 已安装 pip install flask-limiter基于 IP 地址限流的 Flask 代码 from flask import Flask, request, jsonify from flask_limiter import Limiterapp Flask(__name__)# 获取真实客户端 IP 地址 def get_client_ip():# 检查是否有 X-Forwarded-For 头部if request.headers.getlist(X-Forwarded-For):return request.headers.getlist(X-Forwarded-For)[0] # 获取真实的客户端 IPelse:return request.remote_addr # 使用默认的 remote_addr# 初始化 Flask-Limiter并使用 get_client_ip 作为限流的 key_func limiter Limiter(key_funcget_client_ip, # 使用真实的客户端 IP 进行限流appapp,storage_uriredis://your_redis_host:redis_port/1 # 使用 Redis 存储限流信息 )# 定义接口并为每个 IP 地址限制每分钟 1 次每天最多 15 次访问 app.route(/send_verification_code, methods[POST]) limiter.limit(1 per minute; 15 per day) def send_verification_code():phone_number request.form.get(phone_number)machine_id request.headers.get(Machine-Id)if not phone_number:return jsonify({error: 手机号不能为空}), 400if not machine_id:return jsonify({error: Machine-Id 不能为空}), 400# 处理发送验证码的逻辑return jsonify({message: 验证码发送成功}), 200if __name__ __main__:app.run(debugTrue)代码解释 get_client_ip 函数: 用于获取真实的客户端 IP优先使用 X-Forwarded-For 头部中的第一个 IP 地址通常为客户端 IP如果没有则使用 request.remote_addr。 Flask-Limiter 配置: key_func 设置为 get_client_ip确保限流基于客户端的真实 IP。storage_uri 指定 Redis 存储限流信息避免 Flask 重启或进程切换时丢失限流数据。 limiter.limit(1 per minute; 15 per day): 设置限流规则限制每个 IP 每分钟只能请求一次每天最多 15 次。 3. Redis 存储限流信息 Flask-Limiter 支持使用 Redis 存储限流信息这样即使 Flask 应用重启限流信息也不会丢失。通过 Redis 可以实现跨进程的限流。 Redis 连接配置 limiter Limiter(key_funcget_client_ip,appapp,storage_uriredis://:passwordredis_host:6379/1 # 使用 Redis db1 )4. 验证限流 通过上述配置当 Flask-Limiter 生效时Redis 中的键将会包含真实的客户端 IP并记录请求的访问次数。例如Redis 中的键可能类似于 LIMITS:LIMITER/client_real_ip/send_verification_code/1/1/minute这样限流规则是基于客户端真实 IP 地址的避免了因 Docker 内网 IP 172.17.0.1 导致的限流错误。 5. 总结 通过 Nginx 的反向代理配置我们可以将客户端的真实 IP 传递给 Flask 应用。结合 Flask-Limiter可以基于客户端的真实 IP 地址实现针对敏感接口的访问频率限制。这样不仅可以提升 Web 应用的安全性还能有效防止滥用行为。 核心步骤总结如下 Nginx 配置: 使用 X-Forwarded-For 和 X-Real-IP 头部传递客户端 IP避免使用 172.17.0.1 等内网 IP。Flask-Limiter: 结合 Redis 实现基于 IP 地址的访问次数限制。客户端真实 IP 获取: 通过 get_client_ip 函数确保 Flask 获取到真实的客户端 IP。 这种限流机制为 Web 应用的安全和性能提供了重要保障。
http://www.hkea.cn/news/14328294/

相关文章:

  • 织梦网站档目管理空白企业网站设计过程中
  • 网站开发成本会计分录有什么平台可以发布推广信息
  • 博物馆网站建设方案书新手创业开什么店最好
  • 网站推广途径和要点有哪些wordpress百家号主题
  • 深圳罗湖医疗集团网站建设网站建设+网络科技公司
  • php视频网站开发实战新乡营销型网站建设
  • 电子商务网站开发 刘兰娟天堂2免费服务器
  • 山东网络推广网站网站建议怎么写
  • 中国公司网站建设网站模板站的模板展示怎么做的
  • 怎样做省钱购物网站wordpress 有图片的文章
  • 做网站找那家公司好合肥市网站制作
  • 网站代码优化网站建设佰首选金手指十二
  • 在哪里有人做网站杭州富阳建设局网站首页
  • 站点创建成功网站qq弹窗代码
  • 2017做电商做什么网站如何设计制作企业网站
  • 企业网站建设可行性分析表网站和做游戏
  • 深圳 SEO 网站建设 哪里学大庆建设中等职业技术学校网站
  • 做二手房网站有哪些资料安全的南昌网站制作
  • 删除网站备案与注销直播软件大全
  • 网站开发视频转码哪个网站可以做卖房
  • 网站添加备案信息吗临沂做网站选盛誉
  • 网站 app以什么主题做网站好
  • 网站内容设计做响应式网站的物流
  • 织梦微信网站模板备案 网站建设方案书
  • 五级偏黄视频网站建设云速seo百度点击
  • 网站建站华为云阿里云虚拟主机可以做两个网站吗
  • 大型网站制作教程营销软文200字
  • 软件网站设计wordpress wiki插件
  • 江苏两学一做网站免费发布推广信息软件
  • 台州网站优化公司wordpress首页调用图片不显示