Caddy V2 IP白名单

Dik*_*raz 10 linux caddy caddyfile

我正在尝试在我的 Caddy v2 配置上实施 IP 白名单。相当于 NGINX 配置的东西,例如:

allow 1.1.1.1;
allow 8.8.8.8;
deny all; 
Run Code Online (Sandbox Code Playgroud)

我当前的 Caddy 配置非常简单:

my.website.com {
        reverse_proxy http://127.0.0.1:3000 {   
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

qed*_*qed 8

你可以在 caddy v2 中尝试这样的操作:

my.domain.com {
    @teammember {
        remote_ip forwarded 183.77.5.126 113.73.5.126
    }
    handle @teammember {
        reverse_proxy /* localhost:8081
    }
    respond "<h1>You are attempting to access protected resources!</h1>" 403
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 5

我并不是说 qed 的答案是错误的,但是我无法让它在我的情况下工作(可能是由于在句柄内使用导入模板?)...

我的解决方案是......旧配置:

private.example.com {
  import my_template argument_1 /path/to/example/argument2
}
Run Code Online (Sandbox Code Playgroud)

这更改为:

private.example.com {
  @blocked not remote_ip 1.2.3.4
  respond @blocked "<h1>Access Denied</h1>" 403
  import my_template argument_1 /path/to/example/argument2
}
Run Code Online (Sandbox Code Playgroud)

只需添加这两行就可以通过该 IP 访问我的网站。来自不同 IP 的测试curl 返回 403 错误。

这是在 Caddy 2.4.6 上完成的


小智 -4

我不确定是否可以直接在 Caddy 中实现,但您可以添加中间件/插件来执行此操作。

这是您可以获得的链接: https: //github.com/pyed/ipfilter

根据这个中间件的文档,如果你只想允许你编写的 2 个 IP,你可能应该这样做:

my.website.com {
    reverse_proxy http://127.0.0.1:3000

    ipfilter / {
        rule allow
        ip 1.1.1.1 8.8.8.8
        blockpage notauthorized.html
    }
}
Run Code Online (Sandbox Code Playgroud)

我还认为,如果想阻止每个请求,而不仅仅是/,你必须编写ipfilter /*而不是ipfilter /.