<div dir="ltr">Also if you want to deliver different content and using the same varnish  you must add x-forwarded-proto to the hashed_data<div><br></div><div>I do not use wordpress, my stack is nginx(http(80), http(443)) -  varnish (6080) - rails (8080) </div><div><br></div><div>When a request is made to the 443 port I add the header x-forwarded-proto "https"  to the proxied request in nginx (via proxy_set_header). then in vcl you must add that header in hash_data here:</div><div><br></div><div><div><font face="monospace, monospace">sub vcl_hash {</font></div><div><font face="monospace, monospace">        if (req.http.X-Forwarded-Proto) {<br></font></div><div><font face="monospace, monospace">                hash_data(req.http.X-Forwarded-Proto);</font></div><div><font face="monospace, monospace">        }</font></div></div><div><font face="monospace, monospace">}</font></div><div><br></div><div>Whit this You are storing two versions for the same url, one for http and other for https, so you wouldn't end getting an http cached item when accessing via https and vice-versa</div><div><br></div><div>In the app backend the Rails app renders stuff using X-Forwarded-Proto as a hint to know whats the working protocol. </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-03 16:16 GMT+01:00 Phil Daws <span dir="ltr"><<a href="mailto:uxbod@splatnix.net" target="_blank">uxbod@splatnix.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you to both.<br>
<br>
Will clone my existing instance and give these suggestions a whirl.<br>
<span class="HOEnZb"><font color="#888888"><br>
Phil.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
----- On 3 Nov, 2015, at 14:17, Jason Heffner <a href="mailto:jdh132@psu.edu">jdh132@psu.edu</a> wrote:<br>
<br>
> We run Varnish in between an F5 and Apache as well as use Nginx for ssl and load<br>
> balancing in development, in conjunction with Wordpress backends. You have to<br>
> tell Wordpress that you are behind SSL and it will function properly. To<br>
> accomplish this I’d use the following code in wp-config.php<br>
><br>
> if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {<br>
>        $_SERVER['HTTPS']='on';<br>
> }<br>
><br>
> You can then also set FORCE_SSL_ADMIN and FORCE_SSL_LOGIN however you see fit<br>
> and it should work. I saw some updates not that long ago to support proxy<br>
> headers but don’t believe they are fully supported yet.<br>
><br>
> Jason<br>
><br>
><br>
>> On Nov 2, 2015, at 12:37 PM, Carlos M. Fernández <<a href="mailto:cfernand@sju.edu">cfernand@sju.edu</a>> wrote:<br>
>><br>
>> Hi, Phil,<br>
>><br>
>> We don't use Nginx but do SSL termination at a hardware load balancer,<br>
>> with most of the work to support that setup done in the VCL, and something<br>
>> similar could possibly apply to your scenario.<br>
>><br>
>> Our load balancer can use different backend ports depending on which<br>
>> protocol the client requests; e.g., if the client connects to port 80 for<br>
>> HTTP, then the load balancer proxies that to Varnish on port 80, while if<br>
>> the client connects to 443 for HTTPS the load balancer proxies to Varnish<br>
>> on port 8008. The choice of Varnish port numbers doesn't matter, just the<br>
>> fact that Varnish listens on both ports and that the load balancer uses<br>
>> one or the other based on the SSL status with the client (using the<br>
>> command line option "-a :80,8008" in this case).<br>
>><br>
>> Then, in vcl_recv, we have the following to inform the backend when an SSL<br>
>> request has arrived:<br>
>><br>
>> if ( std.port( server.ip ) == 8008 ) {<br>
>>    set req.http.X-Forwarded-Proto = "https";<br>
>> }<br>
>><br>
>> We also have the following in vcl_hash to cache HTTP and HTTPS requests<br>
>> separately and avoid redirection loops:<br>
>><br>
>> if ( req.http.X-Forwarded-Proto ) {<br>
>>    hash_data( req.http.X-Forwarded-Proto );<br>
>> }<br>
>><br>
>> The backend then can look for that header and respond accordingly. For<br>
>> example, in Apache we set the HTTPS environment variable to "on":<br>
>><br>
>> SetEnvIf X_FORWARDED_PROTO https HTTPS=on<br>
>><br>
>> I have no knowledge of Nginx, but if it can be configured to use different<br>
>> backend ports then you should be able to use the above.<br>
>><br>
>> Best regards,<br>
>> --<br>
>> Carlos.<br>
>><br>
>> -----Original Message-----<br>
>> From: varnish-misc-bounces+cfernand=<a href="mailto:sju.edu@varnish-cache.org">sju.edu@varnish-cache.org</a><br>
>> [mailto:<a href="mailto:varnish-misc-bounces%2Bcfernand">varnish-misc-bounces+cfernand</a>=<a href="mailto:sju.edu@varnish-cache.org">sju.edu@varnish-cache.org</a>] On Behalf<br>
>> Of Phil Daws<br>
>> Sent: Monday, 02 November, 2015 12:03<br>
>> To: <a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
>> Subject: Varnish, NGINX SSL and Wordpress<br>
>><br>
>> Hello,<br>
>><br>
>> Are any of you running Varnish in-front of a SSL Wordpress site ?<br>
>><br>
>> I have tried using NGINX as the SSL termination point and proxying back to<br>
>> Varnish on port 80 but you end up with mixed content errors.  If you tell<br>
>> Wordpress to use https exclusively, and you are proxy with http, then you<br>
>> get into 301 perm loop.<br>
>><br>
>> Any thoughts please ?<br>
>><br>
>> Thanks, Phil<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> varnish-misc mailing list<br>
>> <a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
>> <a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
>><br>
>> _______________________________________________<br>
>> varnish-misc mailing list<br>
>> <a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
>> <a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
><br>
><br>
> _______________________________________________<br>
> varnish-misc mailing list<br>
> <a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
> <a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
<br>
<br>
<br>
_______________________________________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a></div></div></blockquote></div><br></div>