Proxy for POST update requests
Chris Savery
chrissavery at gmail.com
Sun Sep 7 22:35:23 MSD 2008
Well, I got this working and it's pretty nice too. I just wanted to post
a couple notes here in the hope they may help someone else who needs to
do this.
relevant config looks like this,
location ~ \.php$ {
proxy_set_header WhatSlave $host;
if ($request_method = 'POST') {
proxy_pass http://theserverwiththedata.com;
}
fastcgi_pass 127.0.0.1:9000; include fastcgi_params;
}
Notice I added a set header line. This was because in some cases the
master server needs to know where the request was proxied from. In some
cases it needs to do a redirect, eg. secure login. And that set header
line causes a header to appear in the $_SERVER variable with the HTTP_
prefix. eg. HTTP_WHATSLAVE and has value of the host without http prefix.
Of course, the master server is running mysql replication and the data
saved during the POST comes back to the slave server pretty quickly. In
this setup all the GET requests drop through to the fastcgi locally and
access the data on the slave. The POST requests pas up to modify data on
the master. Good idea: give the local mysql user only "select"
privileges to make sure it doesn't nasty up the local data. If you allow
altering data locally when doing replication you will create big
headaches sooner or later.
Chris :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20080908/696a8750/attachment.html>
More information about the nginx
mailing list