[PATCH v2 1/1] snapshot::web Fix redirects to farm
We already have a rule to let Varnish follow the 302 redirects from the
/archive endpoint to the farm (/file) endpoint. However, this rule does
not handle all backends correctly, as some use relative redirects.
We now add a second rule to follow the relative (internal) redirects,
restoring this behavior.
A nice side-effect is that the artifacts are now delivered with the
correct file-name (instead of the farm hash).
Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
Changes since v1:
- Don't replace existing rule as still in use for lw07
- Do not explicitly set the http.host
Best regards,
Felix Moessbauer
Siemens AG
.../roles/templates/snapshot/snapshot.debian.org.vcl.erb | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/modules/roles/templates/snapshot/snapshot.debian.org.vcl.erb b/modules/roles/templates/snapshot/snapshot.debian.org.vcl.erb
index e7446ce8c..e93ee0437 100644
--- a/modules/roles/templates/snapshot/snapshot.debian.org.vcl.erb
+++ b/modules/roles/templates/snapshot/snapshot.debian.org.vcl.erb
@@ -39,6 +39,13 @@ sub vcl_backend_response {
set bereq.url = regsub(beresp.http.location,"[^/]*","");
return (retry);
}
+ if (bereq.http.host != "snapshot-dev.debian.org" &&
+ bereq.retries == 0 &&
+ beresp.status == 302 &&
+ beresp.http.location ~ "^/file/") {
+ set bereq.url = beresp.http.location;
+ return (retry);
+ }
# don't cache things too long
if (beresp.ttl > 1w) {
set beresp.ttl = 10m;
--
2.39.5
Reply to: