人们可以使用 Nginx代理_pass到我的域,在浏览器上,内容是我的,但在地址栏上是他们的域。
如何检测请求何时通过'proxy_pass 并拒绝这些请求?
例如,当我故意 proxy_pass 到 google.com 时,我收到 404 错误。
server {
listen 80;
server_name test.com;
location / {
proxy_pass https://google.com;
}
}
似乎无法阻止这种情况,例如那些人使代理的行为就像普通浏览器一样。但是,如果他们只使用一个简单的 Nginx proxy_pass,如何防止呢?
从理论上讲,您可以,但并非没有很多努力。
假设您正在运行一个支持 HTTP/2 的网站。
检测
proxy_pass
到您的网站可以建立在这些连接将始终源自HTTP/1.x
而不是通过HTTP/2
.然后,您可以将其与浏览器功能相匹配。
因此,基本上,如果您看到支持 HTTP/2 的浏览器通过旧的 HTTP/1.x 协议连接到您的网站,您可以放心地假设它是通过 NGINX
proxy_pass
或其他一些代理(NGINX 除外)。因此,尽管这可行,但您会切断所有仅通过某种代理浏览的客户端...
那是被动的方法。
主动方法只是检查来自同一 IP 地址的多个连接。您将检查日志(例如 Fail2ban 或其他日志扫描程序)是否有来自同一 IP 地址的许多连接,具有不同的用户代理(或没有)。
具有许多不同用户代理/访问权限的 IP 地址可能是某种代理。
最后,您可以进行 RDNS 检查/whois 查询以查看请求是否来自已知的托管服务提供商。