如果这if
是在location /
例如内部创建的,则以location /some-page
这种方式创建一个单独的,if
当 URI 为/some-page
编辑:好的,让我解释一下我的理解,你告诉我我是对还是错,
- 良好的 IP(您的):按原样提供页面
- 错误 IP(不是你的):重定向到
/some-page
问题是,当Bad IP被重定向到/some-page
它仍然会/some-page
再次重定向到,因为它仍然是一个Bad IP,所以它通过了if
测试
我的解决方案:从块中删除/some-page
位置:/
location / {
# bla bla
if ($remote_addr != 127.0.0.1) {
rewrite ^ http://www.example.com/some-page;
}
# rest of bla bla
}
location /some-page {
try_files index.html index.php; # or whatever
}
当 Bad IP 被转发给/some-page
它时,它将不再执行if
条件,因此将结束无限重定向循环。
第二次编辑:您可以自行在 nginx 中设置权限,让我演示一下:
location / {
error_page 403 = @badip
allow 127.0.0.1;
deny all;
#rest of bla bla
}
location @badip {
return 301 $scheme://example.com/some-page;
}