人们可以使用 Nginx代理密码到我的域名和浏览器上,内容是我的,但在地址栏上它是他们的域名。
如何检测请求何时通过 proxy_pass 并拒绝这些请求?
例如,当我故意将 proxy_pass 传递到 google.com 时,出现 404 错误。
server {
listen 80;
server_name test.com;
location / {
proxy_pass https://google.com;
}
}
似乎无法阻止这种情况,例如那些人让代理的行为就像普通浏览器一样。但是,如果他们只是使用简单的 Nginx proxy_pass,该如何防止呢?
答案1
从理论上讲,你可以,但需要付出很多努力。
据称,您正在运行一个支持 HTTP/2 的网站。
检测proxy_pass
您的网站可以建立在这样一个事实之上:这些连接将始终通过 发起,HTTP/1.x
而绝不会通过HTTP/2
。
然后您可以将其与浏览器功能进行匹配。
因此,从本质上讲,如果你看到支持 HTTP/2 的浏览器通过较旧的 HTTP/1.x 协议连接到你的网站,你可以放心地认为它是通过 NGINXproxy_pass
或某些其他代理(NGINX 除外)。
因此,虽然这可行,但您会切断所有仅通过某种代理浏览的客户端……
这是一种被动的做法。
主动方法只是检查来自同一 IP 地址的连接数量。您将检查日志(例如 Fail2ban 或其他日志扫描程序)以查找来自同一 IP 地址的多个连接,这些连接具有不同的用户代理(或没有)。
具有大量不同用户代理/访问的 IP 地址很可能是某种代理。
最后,您可以执行 RDNS 检查/whois 查询以查看请求是否来自已知托管服务提供商。