On Sat, Aug 30, 2008 at 05:28:25AM +0700, Chris Savery wrote:
I'd like to do a geo based redirect. Users who initially hit my site
would be given an IP round robin from the DNS servers. Then each node
would test the ip and decide if it would be better to redirect to the
closer node. Only doing this for index.php, eg.
http {
...
geo $region {
default NA;
include georegions.conf;
}
...
server {
...
location ~ ^/index.php {
if ($region = NA)
--> what to write here to redirect to other IP?
}
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include
fastcgi_params; }
}
... other servers...
First it's better to use more effective location:
- location ~ ^/index.php {
+ location = /index.php {
Or you may do it for "/" only:
location = / {
As to redirect, I think it's better to use something like this:
geo $region {
default "";
include georegions.conf;
}
server {
location = /index.php {
if ($region) {
rewrite ^ http://$region/index.php;
}
fastcgi_pass 127.0.0.1:9000;
...
}
The georegions.conf is site specific, i.e, for NA site:
x.x.x.x/x ""; # NA net
x.x.x.x/x eu.domain.com; # EU net
x.x.x.x/x as.domain.com; # AS net
for EU site:
x.x.x.x/x na.domain.com; # NA net
x.x.x.x/x ""; # EU net
x.x.x.x/x as.domain.com; # AS net