nginx 允许|拒绝 $realip_remote_addr
nginx allow|deny $realip_remote_addr
使用 nginx,您可以允许和拒绝范围和 ips (https://www.nginx.com/resources/admin-guide/restricting-access/)。
使用realip模块,可以把它使用的ip改成cloudflare后的真实IP。 (http://nginx.org/en/docs/http/ngx_http_realip_module.html)
事情是这样的,我想将任何不是 Cloudflare 或本地主机的 IP 列入黑名单。这被证明是相当困难的,我试过在设置 real_ip 模块设置之前放置它,但没有雪茄。
这可能吗?如果用户不通过 cloudflare,这似乎是一个缺陷,它允许对某个 vhost 进行更多滥用。
有 $realip_remote_addr 变量,但我一辈子都找不到方法让 allow/deny 使用它来代替普通的 $remote_addr。
编辑:我注意到防火墙可以对此有所帮助。不幸的是,我真的只需要几个虚拟主机。
我认为你想阻止直接访问你的机器,即通过你机器的 ip。
您可以为此使用 cloudflare 设置的 http header。每当通过 cloudflare 发出请求时,它会将 $http_cf_connecting_ip
设置为访问您机器的机器的 ip。
所以你可以写一个条件,拒绝所有空 $http_cf_connecting_ip
.
的请求
这种简单性可以成就伟大的事情。
使用$realip_remote_addr == $remote_addr
更聪明,因为$http_*
可以被发送此类请求的客户端伪造。 (朋友指给我的)
编辑: 好的,考虑到以上几点,最好使用 Lua 模块。
类似于下面的内容。
access_by_lua_block {
if ngx.var.remote_addr == ngx.var.realip_remote_addr then
return ngx.redirect("http://somewhere.else.please/");
end
}
您可以使用地理块轻松做到这一点
geo $realip_remote_addr $giveaccess {
default 0;
IPBLOCK1 1;
IPBLOCK2 1;
…
}
server {
…
location / {
if ($giveaccess = 0){
return 403 "$realip_remote_addr";
#use it for debug
}
}
使用 nginx,您可以允许和拒绝范围和 ips (https://www.nginx.com/resources/admin-guide/restricting-access/)。 使用realip模块,可以把它使用的ip改成cloudflare后的真实IP。 (http://nginx.org/en/docs/http/ngx_http_realip_module.html)
事情是这样的,我想将任何不是 Cloudflare 或本地主机的 IP 列入黑名单。这被证明是相当困难的,我试过在设置 real_ip 模块设置之前放置它,但没有雪茄。
这可能吗?如果用户不通过 cloudflare,这似乎是一个缺陷,它允许对某个 vhost 进行更多滥用。
有 $realip_remote_addr 变量,但我一辈子都找不到方法让 allow/deny 使用它来代替普通的 $remote_addr。
编辑:我注意到防火墙可以对此有所帮助。不幸的是,我真的只需要几个虚拟主机。
我认为你想阻止直接访问你的机器,即通过你机器的 ip。
您可以为此使用 cloudflare 设置的 http header。每当通过 cloudflare 发出请求时,它会将 $http_cf_connecting_ip
设置为访问您机器的机器的 ip。
所以你可以写一个条件,拒绝所有空 $http_cf_connecting_ip
.
这种简单性可以成就伟大的事情。
使用$realip_remote_addr == $remote_addr
更聪明,因为$http_*
可以被发送此类请求的客户端伪造。 (朋友指给我的)
编辑: 好的,考虑到以上几点,最好使用 Lua 模块。
类似于下面的内容。
access_by_lua_block {
if ngx.var.remote_addr == ngx.var.realip_remote_addr then
return ngx.redirect("http://somewhere.else.please/");
end
}
您可以使用地理块轻松做到这一点
geo $realip_remote_addr $giveaccess {
default 0;
IPBLOCK1 1;
IPBLOCK2 1;
…
}
server {
…
location / {
if ($giveaccess = 0){
return 403 "$realip_remote_addr";
#use it for debug
}
}