use*_*016 5 redirect http nginx
我希望所有不是由我的 IP 地址发出的 nginx 请求都重定向到/some-page. 我目前正在使用这个 nginx 配置:
if ($remote_addr != 127.0.0.1) {
rewrite ^ http://www.example.com/some-page;
}
Run Code Online (Sandbox Code Playgroud)
这对我有用,因为我没有被重定向,但其他任何人都被困在重定向循环中,因为该块不检查请求是否为/some-page.
我怎样才能解决这个问题?我不确定如何检查请求路径。
如果这if是在location /例如内部创建的,则以location /some-page这种方式创建一个单独的,if当 URI 为/some-page
/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
}
Run Code Online (Sandbox Code Playgroud)
当坏 IP 被转发给/some-page它时,它不再执行if条件,这样将结束无限重定向循环。
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27630 次 |
| 最近记录: |