微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

http – 使用nginx重定向所有不是来自我的IP的请求

我希望所有不是由我的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] 举报,一经查实,本站将立刻删除。

相关推荐