[wp-hackers] Make WP more usable behind load balancers/proxies

Hauke mailman at haukebruno.de
Wed Oct 16 07:40:27 UTC 2013


Hi Nacin,

thanks for your advices. I will have a look at it.

-- 
Best regards,
Hauke
On Wednesday, October 16, 2013 12:32:19 AM Andrew Nacin wrote:
> On Tue, Oct 15, 2013 at 1:52 PM, Hauke <mailman at haukebruno.de> wrote:
> > is it possible to change code lines like
> > 
> > $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] .
> > $_SERVER['REQUEST_URI'] );
> > 
> > into something like this:
> > 
> > if (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
> > 
> >   $serverhost = $_SERVER['HTTP_X_FORWARDED_HOST'];
> > 
> > } else {
> > 
> >    $serverhost = 'http://' . $_SERVER['HTTP_HOST'];
> > 
> > }
> > $current_url = set_url_scheme( $serverhost . $_SERVER['REQUEST_URI'] );
> 
> Many load balancers and proxy servers forward HTTP headers for HTTPS, IP
> addresses, and more. These typically take the form of HTTP_X_FORWARDED_FOR
> (X-Forwarded-For), for remote IP addresses, and HTTP_X_FORWARDED_PROTO
> (X-Forwarded-Proto), for whether traffic is going over the HTTPS protocol.
> Occasionally other information needs to be forwarded, like the server port
> or hostname.
> 
> If WordPress blindly listened to these headers — especially for protocols —
> there is a risk of infinite redirects and general breakage. To make matters
> worse, these are not formal standards, and are rather freeform. As a
> result, many web server and configurations do this differently. For
> example, one configuration might prepend “HTTP_”, resulting in HTTP_HTTPS.
> What should be done instead is a server should either pass properly mapped
> headers to PHP, or some code can do the mapping in wp-config.php. For
> example:
> 
> if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' ===
> $_SERVER['HTTP_X_FORWARDED_PROTO'] ) )
>     $_SERVER['HTTPS'] = 'on';
> 
> See also:
> http://core.trac.wordpress.org/ticket/9235
> http://core.trac.wordpress.org/ticket/15009
> http://core.trac.wordpress.org/ticket/15733
> http://core.trac.wordpress.org/ticket/19337
> http://core.trac.wordpress.org/ticket/24394
> etc.
> 
> Nacin
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers



More information about the wp-hackers mailing list