We have website e.g. http://www.acb.com which points to a hardware load-balancer which is suppose to load-balance two dedicated server. Each server is running apache as a frontend and uses mod_proxy to forward request to tomcat.
Some pages of our website require SSL like https://www.abc.com/login or https://www.abc.com/checkout
SSL is terminated at hardware load-balancer.
When I configured mod_pagespeed it compressed, minimized and merged css file and rewrote them with an absolute url http://www.abc.com/css/merged.pagespeedxxx.css instead of relative url /css/merged.pagespeedxxx.css.
It works fine for non ssl pages but when I navigate to an ssl page such as https://www.abc.com/login all the css and js files are blocked by browser like chrome as their absolute url is not using ssl.
How can I resolve this issue ?
Check for
httpsstring in this documentation and this one.You should show us in your question your current
ModPagespeedMapOriginDomain&&ModPagespeedDomainsettings.From what I understand from these lines:
And these ones:
The solution would be something like that (or the one with
ModPagespeedLoadFromFile)BUT, the real problem for you is that apache does not directly receive the HTTPS requests as the hardware load balancer handle it on his own. So the mod-pagespeed output filter does not even know it was requested for an SSL domain. And when it modify the HTML content, applying domain rewrite maybe, it cannot handle the https case.
So… one solution (untested) would be using another virtualhost on the apache server, still HTTP if you want, dedicated to https handling. All https related urls (
/login,/checkout,…) would then be redirected to this specific domain name by the hardware load balancer. Let’s sayhttp://secure.acb.com. This name is only in use between the load balancer and front apaches (and quite certainly apache should restrict access to this VH to the load balancer only).Then in these
http://secure.acb.comvirtualhosts mod_pagespeed would be configured to externally rewrite domains tohttps://www.example.com. Something like:Finally the end user request is
https://www.example.com/login, the load balancer manages HTTPS, talk to apache withhttp://secure.example.com, and page results contains only references tohttps://www.example.com/*assets. Now when theses assets are requested with an https domain request you still have the problem of serving theses assets. So the hardware load balancer should allow all theses assets url in the https domain and send them to thehttp://secure.abc.comvirtualhosts (or any other static VH).