gpt4 book ai didi

Varnish VCL只需将client.ip替换为req.http.x-forwarded-for

转载 作者:行者123 更新时间:2023-12-03 17:47:09 24 4
gpt4 key购买 nike

在我的 Varnish 2 设置中,我有一个像这样的清除/禁止块:

acl purge {
"localhost";
"x.x.x.x"/24;
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
if (req.request == "BAN") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
ban("obj.http.x-host == " +req.http.host+" && obj.http.x-url ~ "+req.url);

# Throw a synthetic page so the
# request wont go to the backend.
error 200 "Ban added";
}
}

我希望我可以简单地替换 client.ip 的 if 语句中的 req.http.x-forwarded-for ,但是当我执行以下编译错误时:
Message from VCC-compiler:
Expected CSTR got 'purge'
(program line 944), at
('purging-banning.vcl' Line 16 Pos 41)
if (!req.http.x-forwarded-for ~ purge) {

----------------------------------------#####----

Running VCC-compiler failed, exit 1
VCL compilation failed

我一直在搜索 Google 和 StackOverflow,但我还没有找到解决我的问题的好方法,或者 req.http.x-forwarded-for 不在正确位置的原因。

谁能帮忙?

最佳答案

尝试使用vmod_std中的“ip”。另请:https://varnish-cache.org/docs/trunk/reference/vmod_std.generated.html#func-ip

像这样:

if (std.ip(req.http.x-forwarded-for, "0.0.0.0") !~ purge) {
error 405 "Not allowed.";
}

这只是将字符串对象转换为IP对象。然后,可以将IP对象与IP acl列表进行比较。

关于Varnish VCL只需将client.ip替换为req.http.x-forwarded-for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000837/

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