我希望所有不是由我的IP地址发出的Nginx请求被重定向到/ some-page.我目前正在使用这个Nginx配置:
if ($remote_addr != 127.0.0.1) {
rewrite ^ http://www.example.com/some-page;
}
这对我有用,因为我没有重定向,但是其他任何人都陷入了重定向循环,因为该块不会检查请求是否为/ some-page.
我怎样才能解决这个问题?我不确定如何检查请求路径.
解决方法:
如果在位置内创建了这个if,例如,以这种方式创建一个单独的位置/某个页面,当URI为/ some-page时,将不会执行if
编辑:好吧,让我解释一下我的理解,你告诉我,如果我是对的,
>好的IP(你的):按原样提供页面
>错误的IP(不是你的):重定向到/ some-page
问题是,当Bad IP被重定向到/ some-page时,它仍然会重定向到/ some-page,因为它仍然是一个坏IP,所以它通过了if测试
我的解决方案:从/ block中删除/ 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
}
当坏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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。