Ale*_*lex 32 nginx ip redirect
我经营着一个相当大的图片库,有 5 位访问者每天使用网络复印机下载整个网站,从而创造了巨大的流量。这些访问者似乎拥有静态 IP。我想要实现的是,这 5 个 IP 在访问该站点时立即被重定向到某个页面(这解释了为什么它们的行为有问题)。所有其他访问者都应该能够正常浏览网站。
服务器运行 CentOS (5.8) 和 nginx (1.0.15) 作为网络服务器。有没有办法通过您知道的 nginx.conf 中的条目来实现这一点?
非常感谢您的提示和支持!
亲切的问候-亚历克斯
kol*_*ack 46
该地理模块由相匹配的客户端地址。您可以使用它来定义要测试的变量,如下所示:
geo $bad_user {
default 0;
1.2.3.4/32 1;
4.3.2.1/32 1;
}
server {
if ($bad_user) {
rewrite ^ http://www.example.com/noscrape.html;
}
}
Run Code Online (Sandbox Code Playgroud)
这比针对 $remote_addr 运行正则表达式更有效,并且更易于维护。
小智 22
使用HttpAccessModule可以快速实现这一点。
server {
if ($remote_addr = 1.2.3.4) {
rewrite ^ http://www.website.com/noscrape.htm;
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果您重定向到同一域中的不同页面,并且按照上面的示例操作,则会导致重定向循环。所以在你的nginx配置文件中,使用如下(我假设你使用wordpress,因为它被广泛使用)
geo $bad_user {
default 0;
1.2.3.4/32 1;
4.3.2.1/32 1;
}
server {
location /
{
if ($bad_user) {
rewrite ^ http://www.example.com/warning-page/ break;
}
try_files $uri $uri/ /index.php$is_args$args;
}
location /warning-page/
{
try_files $uri $uri/ /index.php$is_args$args;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果来自黑名单 IP 的人访问了站点中未列出的警告页面之外的任何页面,他们将被重定向到警告页面。由于重写是在位置/块中,因此不会导致重定向循环。但是,如果它位于服务器块内部,则会导致重定向循环。
归档时间: |
|
查看次数: |
97908 次 |
最近记录: |