Index: binary-improvements/MapRendering/Web/Handlers/SessionHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/SessionHandler.cs	(revision 309)
+++ binary-improvements/MapRendering/Web/Handlers/SessionHandler.cs	(revision 311)
@@ -52,5 +52,5 @@
 				}
 			} else if (subpath.StartsWith ("login")) {
-				string host = (parent.isSslRedirected ? "https://" : "http://") + req.UserHostName;
+				string host = (Web.isSslRedirected (req) ? "https://" : "http://") + req.UserHostName;
 				string url = OpenID.GetOpenIdLoginUrl (host, host + "/session/verify");
 				resp.Redirect (url);
Index: binary-improvements/MapRendering/Web/Web.cs
===================================================================
--- binary-improvements/MapRendering/Web/Web.cs	(revision 309)
+++ binary-improvements/MapRendering/Web/Web.cs	(revision 311)
@@ -24,7 +24,11 @@
 		private bool useStaticCache = false;
 
-		public bool isSslRedirected {
-			private set;
-			get;
+		public static bool isSslRedirected (HttpListenerRequest req) {
+			string proto = req.Headers ["X-Forwarded-Proto"];
+			if (!string.IsNullOrEmpty (proto)) {
+				return proto.Equals ("https", StringComparison.OrdinalIgnoreCase);
+			}
+
+			return false;
 		}
 
@@ -44,5 +48,4 @@
 
 				// TODO: Read from config
-				isSslRedirected = false;
 				useStaticCache = false;
 
