BryanDavis has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/111925

Change subject: Send Vary header on http to http redirect
......................................................................

Send Vary header on http to http redirect

Use the technique discovered by Ori in Id2cc29f to work around an Apache
"feature" that strips headers from the response when generating a 30x
response. Sets a "ProtoRedirect" environment variable with the
RewriteRule that triggers the 30x response and then adds a "Vary:
X-Forwarded-Proto" header later in the Apache response cycle.

Change-Id: I46ec415af61e42411aec2627dee20abe5463bf0e
---
M main.conf
M remnant.conf
M wikimania.conf
M wikimedia.conf
4 files changed, 46 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/apache-config 
refs/changes/25/111925/1

diff --git a/main.conf b/main.conf
index cd8cee1..bb56d43 100644
--- a/main.conf
+++ b/main.conf
@@ -280,7 +280,8 @@
 
     # Push to SSL
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule (.) https://donate.wikimedia.org%{REQUEST_URI} [R=301]
+    RewriteRule (.) https://donate.wikimedia.org%{REQUEST_URI} 
[R=301,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     RewriteRule ^/$ 
https://donate.wikimedia.org/wiki/Special:FundraiserRedirector [R=302,L]
 
@@ -318,7 +319,8 @@
 
     # Push to SSL
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule (.) https://vote.wikimedia.org%{REQUEST_URI} [R=301]
+    RewriteRule (.) https://vote.wikimedia.org%{REQUEST_URI} 
[R=301,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     <Directory "/usr/local/apache/common/docroot/vote/w">
         <IfModule mod_php5.c>
diff --git a/remnant.conf b/remnant.conf
index 4701ad6..3fab544 100644
--- a/remnant.conf
+++ b/remnant.conf
@@ -131,7 +131,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://grants.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://grants.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/grants/w/index.php
@@ -168,7 +169,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://fdc.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://fdc.wikimedia.org/$1 [R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/fdc/w/index.php
@@ -205,7 +207,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://internal.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://internal.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/internal/w/index.php
@@ -242,7 +245,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://board.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://board.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/board/w/index.php
@@ -279,7 +283,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://boardgovcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://boardgovcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/boardgovcom/w/index.php
@@ -316,7 +321,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://spcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://spcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/spcom/w/index.php
@@ -353,7 +359,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://chapcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://chapcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/chapcom/w/index.php
@@ -463,7 +470,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://searchcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://searchcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/searchcom/w/index.php
@@ -570,7 +578,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://office.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://office.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/office/w/index.php
@@ -608,7 +617,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://chair.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://chair.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/chair/w/index.php
@@ -680,7 +690,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://auditcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://auditcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/auditcom/w/index.php
@@ -754,7 +765,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://otrs-wiki.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://otrs-wiki.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/otrs-wiki/w/index.php
@@ -791,7 +803,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://exec.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://exec.wikimedia.org/$1 [R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/exec/w/index.php
@@ -828,7 +841,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://collab.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://collab.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/collab/w/index.php
@@ -900,7 +914,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://movementroles.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://movementroles.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/movementroles/w/index.php
@@ -937,7 +952,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://checkuser.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://checkuser.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/checkuser/w/index.php
@@ -974,7 +990,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://steward.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://steward.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/steward/w/index.php
@@ -1011,7 +1028,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://ombudsmen.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://ombudsmen.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/ombudsmen/w/index.php
diff --git a/wikimania.conf b/wikimania.conf
index e7352ac..246f5a9 100644
--- a/wikimania.conf
+++ b/wikimania.conf
@@ -58,7 +58,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://wikimaniateam.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://wikimaniateam.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/wikimedia.org/w/index.php
diff --git a/wikimedia.conf b/wikimedia.conf
index 661a5c8..1f9969b 100644
--- a/wikimedia.conf
+++ b/wikimedia.conf
@@ -123,7 +123,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://transitionteam.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://transitionteam.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/transitionteam/w/index.php
@@ -160,7 +161,8 @@
 
     RewriteEngine On
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
-    RewriteRule ^/(.*)$ https://iegcom.wikimedia.org/$1 [R=301,L]
+    RewriteRule ^/(.*)$ https://iegcom.wikimedia.org/$1 
[R=301,L,E=ProtoRedirect]
+    Header always merge Vary X-Forwarded-Proto env=ProtoRedirect
 
     # Primary wiki redirector:
     Alias /wiki /usr/local/apache/common/docroot/iegcom/w/index.php

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I46ec415af61e42411aec2627dee20abe5463bf0e
Gerrit-PatchSet: 1
Gerrit-Project: operations/apache-config
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to