php - ddos挑战页面的两台服务器之间的通信?
问题描述
我需要开发一个与 Cloudflare 防火墙挑战非常相似的挑战页面。
我知道如何制作挑战应用程序的前端和后端,并且我知道如何在服务器上进行设置。
问题在于如何将其实施到位于一台服务器上的网站,而挑战应用程序位于另一台服务器上。我应该如何在服务器之间进行通信?两台服务器都是 Ubuntu 16.4。谢谢大家。
解决方案
我认为最好使用 nginx 服务器来解决这个问题,比如 cloudflare。
- 做一个有速率限制的 nginx 反向代理
- 如果限制命中用户将被重定向到错误页面
- 将您的挑战应用程序与错误页面集成。
有关此配置的更多信息在这里: https ://serverfault.com/questions/645154/how-to-redirect-to-an-other-link-when-excess-request-limit-req-with-nginx
以及如何在错误页面中使用 PHP 在这里: Nginx,PHP + FPM 自定义错误页面 ,您可以在第三个服务器上运行此反向代理,也可以在挑战应用服务器上运行它。
使您的域指向反向代理,然后进行 nginx 配置
server {
listen 80 default_server;
server_name *.*;
client_body_timeout 5s;
client_header_timeout 5s;
location / {
proxy_set_header Host $host;
proxy_pass http://00.00.00.00/; #replace with upstream ip
}
}
你必须将它与自定义 php 错误页面结合起来
推荐阅读
- swift - 关于 SwiftUI 中 View 作为类型约束的问题
- flutter - 不能接受 snapshot.data.docs;“.docs”
- codenameone - 代号 Arch Linux 上的一个媒体文件 I/O 异常
- javascript - 想要调用 api 以 json 格式从 mongodb 获取数据,但使用 javascript、node.js、express、mongodb 获取原始格式的数据
- python - 按组数对数据帧进行排序和过滤
- android - 如何在kotlin中舍入一个数字
- .htaccess - htaccess /en 工作正常,但 /en/ 给出页面找不到
- c# - PUBNUB - 订阅不适用于 .NET Windows 服务
- c - 在使用 strcpy 之前做一个 malloc 吗?
- java - 获取到vehicle和userApp类的实例后,如何将获取到的经纬度值传递给方法?