user www-data www-data; worker_processes 2; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { # max clients = worker_processes * worker_connections worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; #access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_min_length 1100; gzip_buffers 4 8k; # text/html is added gzip_types by default gzip_types text/plain application/x-javascript application/x-shockwave-flash text/css; #NO CGI SUPPORT IN NGINX fix stat .pl later upstream web_backend { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; server 127.0.0.1:8004; server 127.0.0.1:8005; server 127.0.0.1:8006; server 127.0.0.1:8007; server 127.0.0.1:8008; server 127.0.0.1:8009; server 127.0.0.1:8010; server 127.0.0.1:8011; server 127.0.0.1:8012; server 127.0.0.1:8013; server 127.0.0.1:8014; server 127.0.0.1:8015; server 127.0.0.1:8016; server 127.0.0.1:8017; server 127.0.0.1:8018; server 127.0.0.1:8019; server 127.0.0.1:8020; server 127.0.0.1:8021; server 127.0.0.1:8022; server 127.0.0.1:8023; server 127.0.0.1:8024; server 127.0.0.1:8025; server 127.0.0.1:8026; server 127.0.0.1:8027; server 127.0.0.1:8028; server 127.0.0.1:8029; } upstream api_backend { server 127.0.0.1:8030; server 127.0.0.1:8031; server 127.0.0.1:8032; server 127.0.0.1:8033; server 127.0.0.1:8034; server 127.0.0.1:8035; server 127.0.0.1:8036; server 127.0.0.1:8037; server 127.0.0.1:8038; server 127.0.0.1:8039; server 127.0.0.1:8040; server 127.0.0.1:8041; server 127.0.0.1:8042; server 127.0.0.1:8043; server 127.0.0.1:8044; } upstream bulkapi_backend { server 10.0.0.10:8000; server 10.0.0.11:8000; server 10.0.0.12:8000; server 10.0.0.10:8001; server 10.0.0.11:8001; server 10.0.0.12:8001; server 10.0.0.10:8002; server 10.0.0.11:8002; server 10.0.0.12:8002; server 10.0.0.10:8003; server 10.0.0.11:8003; server 10.0.0.12:8003; } upstream tah_backend { server 10.0.0.10:8004; server 10.0.0.11:8004; server 10.0.0.12:8004; server 10.0.0.10:8005; server 10.0.0.11:8005; server 10.0.0.12:8005; } server { listen 80; server_name .openstreetmap.org api.openstreetmap.org; root /home/rails/public; index index.html; access_log /var/log/nginx/openstreetmap.org.access.log; include /etc/nginx/fastcgi_params; #Redirect Historical Links to correct servers location /trac/ { rewrite ^/trac/(.*)$ http://trac.openstreetmap.org/$1 permanent; } location /wiki/ { rewrite ^/wiki/(.*)$ http://wiki.openstreetmap.org/$1 permanent; } location / { allow all; } #Handle api.openstreetmap/ -> api.openstreetmap/api/ if ($host ~* api\.(.*)) { rewrite ^/(0\.[0-9]+)/(.*)$ /api/$1/$2; } location /api/ { include /etc/nginx/fastcgi_params; if ($http_user_agent ~ "^tilesAtHome") { #deny all; fastcgi_pass tah_backend; break; } } location ~ ^/api/0\.6/(map|relation|trackpoints|amf|amf/read|swf/trackpoints|trace/[0-9]+/data)$ { fastcgi_pass bulkapi_backend; break; } location ~ ^/api/0\.6/.*/search$ { fastcgi_pass bulkapi_backend; break; } location ~ ^/api/0\.6/.*/full$ { fastcgi_pass bulkapi_backend; break; } # fastcgi Web / Data Browser / Relations etc location ~ ^/api/0\.6/ { fastcgi_pass api_backend; break; } #Deny unknown API version location ~ ^/api/0\.[0-9]+/ { deny all; } #Handle Special Case Expiry location ~ ^/(export|openlayers)/ { expires 7d; } location ~ ^/(images|javascripts|stylesheets)/ { expires max; } location / { fastcgi_index index.html; if (!-f $request_filename) { fastcgi_pass web_backend; break; } } location /crossdomain.xml { default_type text/x-cross-domain-policy; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } } }