问题标签 [fastly]

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.

0 投票
1 回答
903 浏览

varnish - 如何在varnish-vcl中提取字符串的前n个字符?

我正在寻找一种从 VCL 中的字符串中提取前“n”个字符的方法。我在 VCL 文档中找不到像 trim(str,starting_pos) 或 substring(str,len) 这样的函数。我试过在 google 和 stackoverflow 上搜索这个,但什么也没出现,所以我在这里问。我感谢您的帮助。

0 投票
1 回答
1196 浏览

caching - 如果 Cache-Control 有 `no-cache` 和 `max-age=900` 会发生什么?

如果我将服务器响应设置为:会发生什么 Cache-Control: private,no-cache,max-age=900?如果标题是这样的会发生什么: Cache-Control: public,no-cache,max-age=900

既然它有一个no-cache浏览器(或代理服务器)是否考虑max-age

0 投票
1 回答
418 浏览

google-app-engine - CDN 背后的 App Engine 灵活(快速)

我们在后面运行一个 App Engine Flexible 应用,前面是 Fastly (CDN)。我们已设置ghs.googlehosted.com为源服务器,因此如果该服务器没有缓存版本,CDN 会将请求转发到该服务器。这几个月来一直运行良好。

但是,我们现在要确保ghs.googlehosted.com通过 TLS 快速连接到源 ( )。它似乎ghs.googlehosted.com不支持 TLS。关于如何克服这种情况的任何想法?

0 投票
0 回答
114 浏览

api - 错误 401 BAN 快速

我正在处理一个奇怪的问题,我的API 平台项目托管在 Heroku 中,并且我正在快速使用缓存(清漆缓存)。

我的问题是我第一次执行 PUT 请求时,出现此错误:

"hydra:description": "客户端错误:BAN http://example.global.ssl.fastly.net导致 401 Unauthorized response:\n{"code":401,"message":"JWT Token not found" }\n",

如果我再试一次,那么我没有任何错误并且可以再次正常工作。

这意味着缓存服务器正在尝试使资源无效但无法“登录”。

重要提示:在我的本地环境中工作正常。

有任何想法吗?

0 投票
1 回答
2031 浏览

amazon-web-services - AWS ELB 从 Fastly 健康检查中获得大量 404 错误

在我的 Elastic Beanstalk 应用程序的日志中,我不断看到"GET /aetn-heartbeat.html HTTP/1.1" 404 158 "-" "Varnish/2.1+fastly (healthcheck)"

负载均衡器工作正常,但由于这些 404 错误,我的 ELB 的运行状况不断显示下降,这有点令人困惑。我的问题是:我会忽略这些 404 吗?想办法阻止这些请求?还是有真正的问题需要解决?

0 投票
1 回答
392 浏览

varnish - 在 Varnish VCL 中访问后端响应的主体

我的 Varnish VCL 代码需要向后端系统发出一个简单的 GET 请求,并确定请求的资源是否可访问。不幸的是,后端系统总是返回 200,我必须检查响应的实际正文才能做出决定。

有没有办法在 VCL 中访问响应正文(小于 1KB)并对其进行子字符串搜索?

我试图避免仅为此功能实施代理服务。

PS 现在我必须坚持使用 Varnish 2.1(快速)

0 投票
1 回答
421 浏览

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编码部分与用清漆生成的不匹配的原因

0 投票
2 回答
230 浏览

gulp - 如何调整我的 gulp 静态资产修订以与 ServiceWorkers 一起使用?

上下文:我有一个生产应用程序(如果你想看这里),它当前正在使用静态资产修订,除了它在生成内容哈希时也处理依赖项之外gulp-rev-allgulp-rev它生成一组具有静态名称(例如goals.jsbecome goals.6a5aa614.js)并使用这些静态名称相互引用的新文件。然后我在生产环境中使用 Fastly CDN 提供这些文件,因此我的 NodeJS 服务器没有被积极用于静态资产。这一直很好。

现在我正在使站点与服务人员离线工作。由于我去年在同步逻辑上做了很多工作,所以网站的动态部分很容易检修。但是我对如何处理我的静态资产有点不知所措。

我想我会使用工作箱,这似乎工作正常。但是workbox precache使用查询来破坏缓存而不是更改文件名,两者都做似乎很愚蠢。但是,如果我停止使用版本化名称,那么如何在不支持 service worker 的浏览器上破坏缓存?

(我还有另一个相关的问题,考虑到 Fastly 的响应对 SW 来说是不透明的,因此继续使用 Fastly 是否有意义,因此不一定是预缓存的好选择?虽然没有 Fastly,但对于任何人来说,应用程序会变得慢很多没有使用服务工作者,这听起来与 PWA 方法对立。我应该添加一个 nginx 缓存还是什么?(我不知道这是什么,但我听说过几次))

在我看来,这必须有一个优雅的解决方案,但我的理解gulp非常有限,我很难知道什么是可能的,而且我对 ServiceWorkers 和缓存的理解非常有限,我很难知道正是我想要的。

因此,我无法在这个问题上获得任何牵引力:

如何调整我的 gulp 静态资产修订以与 ServiceWorkers 一起使用?

有用的一件事是链接到其他生产应用程序如何处理此问题的示例。

0 投票
0 回答
47 浏览

nginx - 请求网址中的无穷大

有人对以 结尾的请求 URL 有问题Infinity吗?

碰巧我们的服务器日志以某种方式接收这种模式的请求。我不知道是否是返回溢出的模式或任何类型的计算,或者是否有任何 CDN 弄乱了路径。

尽管这可能是一个愚蠢的问题,但也许我可以就如何追踪问题的原因获得一些见解。

提前致谢

0 投票
1 回答
138 浏览

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。我该怎么做?