问题标签 [fastly-vcl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
redirect - 用于 301 的快速 vcl 将混合大小写路径重定向到小写
自迁移以来,我的应用程序具有仍然链接到的混合大小写路径,但这些路径应该 301 重定向到所有小写路径。但是,出于遗留 api 和 graphql 查询的原因,有些路径仍需要以混合大小写形式存在。
我的问题的一个更详细但仍然简化的版本是:在我的 Fastly 配置中使用自定义 vcl,我如何 301 将所有混合大小写的 url 重定向为小写,但排除/api
and /graphql
?我想我也想免除所有查询字符串和散列被小写。
我对 vcl 的熟悉程度非常低,肯定会欣赏一些例子!
更新:到目前为止,我有以下内容,但我对此并没有太大的信心:
varnish - 快速和/或通用清漆子程序请求流程
所以快速使用 varnish 2.1.5 的修改版本
它们不提供子程序请求流程的图表,但 varnish 提供(见下文)。
现在,根据下图,只有在执行withinvcl_hash
时才会输入。但根据 Fastly 的一位工程师的说法……lookup
vcl_recv
vcl_hash
几乎在所有情况下都会执行(除非你restart
在vcl_recv
)
那么它是哪一个?有谁知道这是一个 Fastly 特定的实现,还是只是官方清漆图未指明的东西和/或是否有在另一个子例程完成时自动输入vcl_*
的子例程?
还有其他人知道的“陷阱”吗?
varnish - 如何在varnish-vcl中提取字符串的前n个字符?
我正在寻找一种从 VCL 中的字符串中提取前“n”个字符的方法。我在 VCL 文档中找不到像 trim(str,starting_pos) 或 substring(str,len) 这样的函数。我试过在 google 和 stackoverflow 上搜索这个,但什么也没出现,所以我在这里问。我感谢您的帮助。
varnish - 在 Varnish VCL 中访问后端响应的主体
我的 Varnish VCL 代码需要向后端系统发出一个简单的 GET 请求,并确定请求的资源是否可访问。不幸的是,后端系统总是返回 200,我必须检查响应的实际正文才能做出决定。
有没有办法在 VCL 中访问响应正文(小于 1KB)并对其进行子字符串搜索?
我试图避免仅为此功能实施代理服务。
PS 现在我必须坚持使用 Varnish 2.1(快速)
jwt - 如何在配置 Fastly CDN 时修复 Varnish VCL 中未终止的短字符串错误
我正在尝试使用 Varnish VCL 在 Fastly CDN 上设置基于令牌的身份验证,并使用此示例 VCL 片段在此处生成和验证 JWT 令牌 -
现在,当我尝试编译它时,它会返回 -
看起来我在合成块期间没有以某种方式正确地转义这些值。
我尝试在 vcl_recv 子例程中添加此合成块的唯一原因是因为我想测试摘要如何生成 JWT 令牌并对其进行验证,并且我想在 Node.Js 的服务器端创建类似的 JWT 令牌所以我试图输出令牌的不同中间部分进行调试。
我对 Varnish 的语法和语义不太熟悉,但我仍然寻求帮助来查找有关此调度子例程的任何文档,但到目前为止还没有找到。
那么,任何人都可以帮助解决这个问题,并让 vcl_recv、vcl_error 在 json 响应中插入不同的中间值。
我尝试使用一些基于 Node.Js 的 base64 url 解码库来解码返回的令牌部分,并且能够解码标头和有效负载部分,但我无法从 Node.Js 生成签名部分。那么,任何人都可以建议 node.js 或任何 javascript 库中 base64url_nopad() 的等价物吗?
对于 hmac_256 加密部分,我们正在尝试使用加密库并创建一个 hmac,例如 crypto.createHmac('sha256', 'SupSecretStr').update().digest('hex'); 但是我认为js中的所有base64编码url库都会返回填充url,这就是为什么这个hmac 256摘要的base64编码部分与用清漆生成的不匹配的原因
varnish-vcl - 使用 Fastly CDN 将动态 CSS URL 放入 HTTP 标头
我正在为缓存清除生成动态 CSS URL。即它们的格式为styles-thisisthecontenthash123.css
.
我还想使用 HTTP Link 标头来稍微更快地加载文件。即有标题Link: <styles-thisisthecontenthash123.css>; rel=stylesheet
我很确定在 Fastly 中使用 VCL 可以做到这一点,但我对生态系统还不够熟悉,无法弄清楚。CSS URL 在 中index.html
,已缓存。我想我可以打开index.html
并使用正则表达式来解析 CSS URL。我该怎么做?
routing - 快速:根据路径参数路由 n% 的流量
当我不想全面推出新功能时,有一个有趣的任务。我只想将流量百分比(基于路径参数)路由到新端点。
我想根据“specialPathParam”计算百分比:ourservice.com/one/'specialPathParam'/something。
因此,如果我们想将 50% 路由到新端点:
如果有 2 个请求 ourservice.com/one/'specialPathParamOne'/something ourservice.com/one/'specialPathParamTwo'/something ,
一个带有“specialPathParamOne”的请求应该发送到新端点,另一个带有“specialPathParamTwo”的请求应该发送到旧端点。
试图找到一种在 VCL 中以某种方式实现它的方法......
这里有什么提示和技巧吗?非常感谢!
varnish - VCL 返回(查找)
我们正在使用 Fastly 及其 Varnish 从我们的服务中传递内容。为了在多个服务之间分发内容,我们使用以下代码段:
这有效并允许我们交付/services/user/get
到服务的/get
端点user
。
然而,使用这个 Snippet 可以让 Fastly 完全跳过gzip
压缩。这可以通过使用来解决return(lookup)
:
此时gzip
压缩正在工作。不幸的是,这使得所有POST
, PATCH
,DELETE
请求都以GET
.
我尝试研究 Varnish 文档,但不确定是否(lookup)
真的是我需要的领域。你能引导我了解这应该如何实施吗?
varnish - Varnish 2.x 的“禁止”替代方案
我们在Varnish 4.x中使用以下代码:
现在我们正在转向使用Varnish 2.x的 Fastly ,所以我们没有得到在 Varnish 2.x 中禁止的替代方案
varnish - 使用 Varnish regex 推送 http2 所有 css 资产文件
我正在使用 Varnish(快速)和 http2 来推送css
和js
文件。我想推送所有css
, js
,png
文件。
我当前的配置仅从给定路径推送指定的文件:
是否可以配置 VCL 文件以便推送所有样式表、javascript 和图像?
我试图设置这样的东西,但没有运气。