gpt4 book ai didi

c - Varnish 4 + Pounds - 绕过特定 IP 地址的缓存

转载 作者:行者123 更新时间:2023-12-04 19:36:13 25 4
gpt4 key购买 nike

我正在尝试将 Varnish 配置为不对特定 IP 使用缓存。

我已经配置了 Varnish 4 Centos Apache 使用 英镑 管理 HTTPS 请求。

我试图遵循这种方法:

Varnish - Bypass Cache for IP Address

基于

https://zcentric.com/2012/03/16/varnish-acl-with-x-forwarded-for-header/

使用一些 C 代码来管理 IP。建议的代码适用于 Varnish3(例如“sp”不再存在,现在有一个 ctx 变量)

我试过用这种方法Inline C Varnish (VCL_deliver)但我得到一个 *"initialization from incompatible pointer type [-Werror] in struct sockaddr_storage client_ip_ss = VRT_r_client_ip(ctx); "错误可能是因为类型也已更改。

我尝试使用的代码是:

struct sockaddr_storage *client_ip_ss = VRT_r_client_ip(ctx); 
struct sockaddr_in *client_ip_si = (struct sockaddr_in *) client_ip_ss;
struct in_addr *client_ip_ia = &(client_ip_si->sin_addr);
const struct gethdr_s hdr = { HDR_REQ, "20X-Forwarded-For:" };
char *xff_ip = VRT_GetHdr(ctx, &hdr);

但我做错了什么。

我现在有点迷茫,如何在 Varnish 4 上禁用特定 IP 的 Varnish ?

谢谢

最佳答案

请不要在 Varnish 中编写内联 C:这是有风险的,并且您正在寻找的解决方案已经在 Varnish 中自动实现。

Keep in mind that Varnish v3 & v4 are no longer supported, please use Varnish 6



Varnish 自动设置 X-Forwarded-For标题

如果要根据 X-Forwarded-For 从缓存中排除项目值,您仍然可以使用 client.ip并将值匹配到 acl .

Varnish 将自动从其客户端获取 IP 并将其存储在 X-Forwarded-For 中。标题。这意味着 client.ip 的值与 req.http.X-Forwarded-For 完全相同.

多个代理和代理协议(protocol)

在到达 Varnish 之前使用其他代理时,您必须确保它们通过 PROXY 协议(protocol)进行通信。 Varnish 支持 PROXY 协议(protocol),你的其他代理也应该支持。

在你的情况下,它是英镑。 Varnish 社区建议 Hitch用于 TLS 终止。

在 Varnish 中启用 PROXY 协议(protocol)支持是通过打开一个特定的监听地址来完成的:
varnishd -a :80 -a :8443,PROXY

然后 Varnish 可以接受端口 8443 上的连接通过代理协议(protocol)。

The main advantage of using the PROXY protocol is that the original client IP address is transmitted all the way to Varnish. Regardless of the number of proxies in front of Varnish, the client.ip value will always be the IP address of the original client.



如果 Pound 不支持 PROXY 协议(protocol),我建议你切换到 Hitch .

定义 ACL

一旦您设法使用 PROXY 协议(protocol)支持设置 TLS 终止,您可以编写一些 VCL 来从缓存中传递项目,如下所示:
acl passem { "7x.xxx.xxx.xxx"; }
sub vcl_recv {
if (!(client.ip ~ passem)) {
return (pass);
}
}

关于c - Varnish 4 + Pounds - 绕过特定 IP 地址的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com