Ema has submitted this change and it was merged.

Change subject: text VCL: delay mobile hostname rewrites
......................................................................


text VCL: delay mobile hostname rewrites

cache_text only (cache_mobile unaffected):
This puts off rewriteing the hostname from mobile->desktop until
we're actually sending a backend request to the applayer from a
tier-one backend varnish.  Previously it was rewritten on
reception at the frontends.  By doing this we avoid the vcl_hash
hack on X-Subdomain and have the cache entries actually
differentiating on the real hostname, which is simpler and saner,
and makes banning of mobile content easier.

Bug: T124166
Change-Id: I6ff7008c88351fcad9d2188764a3202ab2cd80f6
---
M templates/varnish/text-backend.inc.vcl.erb
M templates/varnish/text-common.inc.vcl.erb
M templates/varnish/text-frontend.inc.vcl.erb
3 files changed, 33 insertions(+), 7 deletions(-)

Approvals:
  Ema: Verified; Looks good to me, approved
  BBlack: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/templates/varnish/text-backend.inc.vcl.erb 
b/templates/varnish/text-backend.inc.vcl.erb
index dfed302..5abc309 100644
--- a/templates/varnish/text-backend.inc.vcl.erb
+++ b/templates/varnish/text-backend.inc.vcl.erb
@@ -47,6 +47,26 @@
 }
 <% end -%>
 
+<% if @site_tier == "one" && scope.function_hiera(["cluster"]) == "cache_text" 
-%>
+sub mobile_hostname_1be_mangle {
+       if (req.http.X-Subdomain) {
+               // Rewrite m.mediawiki.org to mediawiki.org etc
+               if (req.http.host == "m.mediawiki.org") {
+                       set bereq.http.host = "www.mediawiki.org";
+               } else if (req.http.host == "m.wikimediafoundation.org") {
+                       set bereq.http.host = "wikimediafoundation.org";
+               } else if (req.http.host == "m.wikisource.org") {
+                       set bereq.http.host = "wikisource.org";
+               } else if (req.http.host == "m.wikidata.org") {
+                       set bereq.http.host = "www.wikidata.org";
+               } else {
+                       // Replace <language>.(m|zero).<project>.org by 
<language>.<project>.org
+                       set bereq.http.host = regsub(req.http.host, 
"^([a-zA-Z0-9-]+)\.(m|zero)\.", "\1.");
+               }
+       }
+}
+<% end -%>
+
 sub vcl_pass {
 <% if @site_tier == "one" -%>
        // BITS: legacy bits.wm.o domain support
@@ -54,6 +74,9 @@
                call bitscompat_1be_mangle;
                return (pass);
        }
+<% end -%>
+<% if @site_tier == "one" && scope.function_hiera(["cluster"]) == "cache_text" 
-%>
+       call mobile_hostname_1be_mangle;
 <% end -%>
        call restore_cookie;
 }
@@ -66,6 +89,9 @@
                return (fetch);
        }
 <% end -%>
+<% if @site_tier == "one" && scope.function_hiera(["cluster"]) == "cache_text" 
-%>
+       call mobile_hostname_1be_mangle;
+<% end -%>
        call restore_cookie;
 }
 
diff --git a/templates/varnish/text-common.inc.vcl.erb 
b/templates/varnish/text-common.inc.vcl.erb
index b62db40..24c9582 100644
--- a/templates/varnish/text-common.inc.vcl.erb
+++ b/templates/varnish/text-common.inc.vcl.erb
@@ -59,13 +59,6 @@
 sub vcl_hash {
        // The cookies below represent mobile preferences that can be set for 
anonymous users.
        if (req.http.X-Subdomain) {
-<% if scope.function_hiera(["cluster"]) == "cache_text" -%>
-               // this splits the cache between mobile and desktop variants in 
general
-               // the text-cluster conditional is temporary, to avoid 
effectively wiping the primary cache
-               // on the legacy mobile cluster on deploy
-               hash_data("Mobile-Subdomain");
-<% end -%>
-
                // Split the cache for the images-disabled variant of the 
mobile site.
                if (req.http.X-Orig-Cookie ~ "(^|;\s*)disableImages=1" || 
req.http.Cookie ~ "(^|;\s*)disableImages=1") {
                        hash_data("disableImages=1");
diff --git a/templates/varnish/text-frontend.inc.vcl.erb 
b/templates/varnish/text-frontend.inc.vcl.erb
index 78e8604..05b614c 100644
--- a/templates/varnish/text-frontend.inc.vcl.erb
+++ b/templates/varnish/text-frontend.inc.vcl.erb
@@ -183,6 +183,12 @@
                                call tag_carrier;
                        }
 
+<% if scope.function_hiera(["cluster"]) == "cache_mobile" -%>
+                       // in the text cluster this is now done on tier-one
+                       // bereq to the applayer only, but it's preserved for
+                       // the mobile cluster here so that we don't
+                       // effectively invalidate the whole mobile cache on
+                       // cache_mobile machines in the process...
                        // Rewrite m.mediawiki.org to mediawiki.org etc
                        if (req.http.host == "m.mediawiki.org") {
                                set req.http.host = "www.mediawiki.org";
@@ -196,6 +202,7 @@
                                // Replace <language>.(m|zero).<project>.org by 
<language>.<project>.org
                                set req.http.host = regsub(req.http.host, 
"^([a-zA-Z0-9-]+)\.(m|zero)\.", "\1.");
                        }
+<% end -%>
                }
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/265271
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6ff7008c88351fcad9d2188764a3202ab2cd80f6
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: BBlack <bbl...@wikimedia.org>
Gerrit-Reviewer: BBlack <bbl...@wikimedia.org>
Gerrit-Reviewer: Ema <e...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to