My notepad

Chris' IT notes…
← Back

Apache ProxyPass for Wordpress master-slave setup

Simple way

Ensure certain traffic goes to a certain server (master), you can use this:

sh
<LocationMatch "^/wordpress/wp-admin/?.*>
ProxyPreserveHost On
ProxyPass http://ip.of.master.server/
</LocationMatch>

For a better setup with Variables, just follow the... following steps :)

Step One: Configure Environment

We need to setup some environment variables to get this to work correctly. Add the following to your environment on the slave server(s): RHEL/CentOS: /etc/sysconfig/httpdi

sh
OPTIONS="-DSLAVE"
export MASTER_SERVER="SERVERIP HERE"

Ubuntu: /etc/apache2/envvars

sh
export APACHE_ARGUMENTS="-DSLAVE"
export MASTER_SERVER="SERVERIP HERE"

Step Two: Configure your VirtualHost

In your VirtualHost configuration do something like the following.

sh
<IfDefine SLAVE>
RewriteEngine On
ProxyPreserveHost On
ProxyPass /wp-admin/http://${MASTER_SERVER}/wp-admin/
ProxyPassReverse /wp-admin/http://${MASTER_SERVER}/wp-admin/

RewriteCond %{REQUEST_METHOD} =POST
RewriteRule . http://${MASTER_SERVER}%{REQUEST_URI} [P]
</IfDefine>