source: subversion/sites/rails_port/config/nginx.conf @ 14608

Last change on this file since 14608 was 14608, checked in by tomhughes, 11 years ago

Return 404 for unknown API versions instead of 403.

File size: 5.8 KB
Line 
1# Run as www-data
2user www-data www-data;
3
4# Use two worker processes
5worker_processes  2;
6
7# Define PID files
8pid /var/run/nginx.pid;
9
10# Define error log
11error_log /var/log/nginx/error.log;
12
13events {
14    # max clients = worker_processes * worker_connections
15    worker_connections  1024;
16}
17
18http {
19    # Configure MIME types
20    include /etc/nginx/mime.types;
21    default_type  application/octet-stream;
22
23    # Configure network details
24    sendfile on;
25    keepalive_timeout 65;
26    tcp_nodelay on;
27
28    # Define access log
29    access_log /var/log/nginx/access.log;
30
31    # Configure compression (text/html is compressed by default)
32    gzip on;
33    gzip_min_length 1100;
34    gzip_buffers 4 8k;
35    gzip_types text/plain application/x-javascript application/x-shockwave-flash text/css;
36   
37    #NO CGI SUPPORT IN NGINX fix stat .pl later
38
39    # Define fastcgi backend for web pages
40    upstream web_backend {
41        server 127.0.0.1:8000;
42        server 127.0.0.1:8001;
43        server 127.0.0.1:8002;
44        server 127.0.0.1:8003;
45        server 127.0.0.1:8004;
46        server 127.0.0.1:8005;
47        server 127.0.0.1:8006;
48        server 127.0.0.1:8007;
49        server 127.0.0.1:8008;
50        server 127.0.0.1:8009;
51        server 127.0.0.1:8010;
52        server 127.0.0.1:8011;
53        server 127.0.0.1:8012;
54        server 127.0.0.1:8013;
55        server 127.0.0.1:8014;
56        server 127.0.0.1:8015;
57        server 127.0.0.1:8016;
58        server 127.0.0.1:8017;
59        server 127.0.0.1:8018;
60        server 127.0.0.1:8019;
61        server 127.0.0.1:8020;
62        server 127.0.0.1:8021;
63        server 127.0.0.1:8022;
64        server 127.0.0.1:8023;
65        server 127.0.0.1:8024;
66        server 127.0.0.1:8025;
67        server 127.0.0.1:8026;
68        server 127.0.0.1:8027;
69        server 127.0.0.1:8028;
70        server 127.0.0.1:8029;
71    }
72
73    # Define fastcgi backend for api requests
74    upstream api_backend {
75        server 127.0.0.1:8030;
76        server 127.0.0.1:8031;
77        server 127.0.0.1:8032;
78        server 127.0.0.1:8033;
79        server 127.0.0.1:8034;
80        server 127.0.0.1:8035;
81        server 127.0.0.1:8036;
82        server 127.0.0.1:8037;
83        server 127.0.0.1:8038;
84        server 127.0.0.1:8039;
85        server 127.0.0.1:8040;
86        server 127.0.0.1:8041;
87        server 127.0.0.1:8042;
88        server 127.0.0.1:8043;
89        server 127.0.0.1:8044;
90    }
91
92    # Define fastcgi backend for bulk api requests
93    upstream bulkapi_backend {
94        server 10.0.0.10:8000;
95        server 10.0.0.11:8000;
96        server 10.0.0.12:8000;
97        server 10.0.0.10:8001;
98        server 10.0.0.11:8001;
99        server 10.0.0.12:8001;
100        server 10.0.0.10:8002;
101        server 10.0.0.11:8002;
102        server 10.0.0.12:8002;
103        server 10.0.0.10:8003;
104        server 10.0.0.11:8003;
105        server 10.0.0.12:8003;
106    }
107   
108    # Define fastcgi backend for tiles@home requests
109    upstream tah_backend {
110        server 10.0.0.10:8004;
111        server 10.0.0.11:8004;
112        server 10.0.0.12:8004;
113        server 10.0.0.10:8005;
114        server 10.0.0.11:8005;
115        server 10.0.0.12:8005;
116    }
117
118    server {
119        # Listen on port 80
120        listen 80;
121
122        # Serve rails public files
123        root /home/rails/public;
124
125        # Use index.html as the index page
126        index index.html;
127   
128        # Include fastcgi configuration
129        include /etc/nginx/fastcgi_params;
130
131        # Redirect trac requests for historical reasons
132        location /trac/ {
133            rewrite ^/trac/(.*)$ http://trac.openstreetmap.org/$1 permanent;
134        }
135
136        # Redirect wiki requests for historical reasons
137        location /wiki/ {
138            rewrite ^/wiki/(.*)$ http://wiki.openstreetmap.org/$1 permanent;
139        }
140
141        # Placeholder for blocking abuse
142        location / {
143            allow all;
144        }
145   
146        # Map api.openstreetmap/0.n/... to api.openstreetmap/api/0.n/...
147        if ($host ~* api\.(.*)) {
148            rewrite ^/(0\.[0-9]+)/(.*)$ /api/$1/$2;
149        }
150   
151        # Strip asset tags
152        location ~ ^/(images|javascripts|openlayers|stylesheets)/ {
153            rewrite ^/(.*)/[0-9]+$ /$1;
154        }
155
156        # Handle tiles@home requests
157        location /api/ {
158            if ($http_user_agent ~ "^tilesAtHome") {
159                #deny all;
160                fastcgi_pass tah_backend;
161                break;
162            }
163        }
164
165        # Handle bulk api requests
166        location ~ ^/api/0\.6/(map|relation|trackpoints|amf|amf/read|swf/trackpoints|trace/[0-9]+/data)$ {
167            fastcgi_pass bulkapi_backend;
168            break;
169        }
170       
171        # Send search requests to the bulk api backend
172        location ~ ^/api/0\.6/.*/search$ {
173            fastcgi_pass bulkapi_backend;
174            break;
175        }
176
177        # Send requests for full objects to the bulk api backend
178        location ~ ^/api/0\.6/.*/full$ {
179            fastcgi_pass bulkapi_backend;
180            break;
181        }
182
183        # Handle the remaining api requests
184        location ~ ^/api/0\.6/ {
185            fastcgi_pass api_backend;
186            break;
187        }
188
189        # Deny old and unknown API versions
190        location ~ ^/api/0\.[0-9]+/ {
191            return 404;
192        }
193           
194        # Handle Special Case Expiry
195        location ~ ^/(export|openlayers)/ {
196            expires 7d;
197        }
198        location ~ ^/(images|javascripts|stylesheets)/ {
199            expires max;
200        }
201
202        # Send everything else to the web backend unless it exists
203        # in the rails public tree   
204        location / {
205            fastcgi_index index.html;
206
207            if (!-f $request_filename) {
208                fastcgi_pass web_backend;
209                break;
210            }
211        }
212
213        # Set the MIME type for crossdomain.xml policy files
214        # or flash will ignore it
215        location ~ /crossdomain.xml$ {
216            default_type text/x-cross-domain-policy;
217        }
218    }
219}
Note: See TracBrowser for help on using the repository browser.