我想使用Varnish-cache来缓存我的Web应用程序的一些依赖性,但我被困在公司代理设置之后。有没有办法告诉Varnish-cache通过代理向其他服务发出http请求?
非常感谢
西蒙
答案 0 :(得分:1)
对于varnish4,这不起作用。做一些网络跟踪,看起来varnish v4做相对req.url,其中一个代理需要一个绝对的req.url 我处于一个裂脑DNS世界,所以我的后端与前端用户看到的域名相同(只是以不同方式重新调整)。因此,我使用req.url变量中的req.http.host创建一个绝对URL。
sub vcl_recv {
# Setting backend hint
set req.backend_hint = varnish_backend;
if (req.url !~ "mydomain.com") {
set req.url ="http://" + req.http.host + req.url;
}
答案 1 :(得分:0)
只要你能用代理讲HTTP,你就可以做任何你想做的事。
示例设置:
[back-end A] [back-end B]
| |
---[corporate proxy]---
|
[Varnish]
将默认端口从80更改为代理端口(例如8080)...
backend corp_proxy {
.host = "proxy.localnet";
.port = "8080";
}
...
sub vcl_recv {
...
/* check if back-end A or B and use proxy as backend */
if (req.http.host == "backend-a.example.com" || req.http.host == "backend-b.example.com") {
set req.backend = corp_proxy;
set req.http.X-Proxy-Pass = 'mypass';
}
...
}
您甚至可以在请求中设置自定义标头(例如某些静态密钥或其他)。