aboutsummaryrefslogtreecommitdiffstats
path: root/conf/nginx.conf-docker
diff options
context:
space:
mode:
authorSam Pearson <sam@sgp.me.uk>2018-09-20 15:42:54 +0100
committerSam Pearson <sam@sgp.me.uk>2018-09-28 14:35:46 +0100
commitd84af0f71aeef0581224c84d74c0372ff0a59877 (patch)
treec2a2ad5887965163d29e05becd5a887b12fefb8d /conf/nginx.conf-docker
parentf8aed6f02cf5084a43375d8680a2e5fafb761529 (diff)
[Docker] Initial Dockerfile & docker-compose setup
This includes four containers: app, memcached, nginx, and postgres. The preinit script is used at container startup to ensure the database is initialised. Includes a volume for the Postgres database to permit persistence. Also sets the `PGDATA` variable to a subdirectory to support optional use of a filesystem mount. The repo/branch can be specified at build time. If `SUPERUSER_EMAIL` and `SUPERUSER_PASSWORD` are set when the FMS container starts the preinit script will pass these to `bin/createsuperuser` when it starts up. These have been set to test values in the supplied Docker Compose configuration. Reverse proxy issue =================== If nginx and fms were on the same machine, ReverseProxy would automatically be in use, but via docker containers they are not. Do we need to force it to be switched on? Let's see. There are four possible options, with their outcome: * port not in Host, ReverseProxy not in use Anything using the automatically-generated base instead of BASE_URL uses port 9000, meaning those links don't work. * port not in Host, ReverseProxy in use Anything using the automatically-generated base instead of BASE_URL uses port 80, meaning those links don't work (they would if you had docker-compose listen on port 80, being then a similar situation to e.g. the AMI image). * port in Host, ReverseProxy not in use This works *unless* the port is 80, just to be contrary to the above; in that case it is stripped and :9000 is put back on, meaning those links again don't work. I realise we use 8000, but would be confusing if someone tried it out. * port in Host, ReverseProxy in use This works in all scenarios, and thus is what we go with.
Diffstat (limited to 'conf/nginx.conf-docker')
-rw-r--r--conf/nginx.conf-docker56
1 files changed, 56 insertions, 0 deletions
diff --git a/conf/nginx.conf-docker b/conf/nginx.conf-docker
new file mode 100644
index 000000000..e50ce82d2
--- /dev/null
+++ b/conf/nginx.conf-docker
@@ -0,0 +1,56 @@
+# An example configuration for running FixMyStreet under nginx. You
+# will also need to set up the FixMyStreet Catalyst FastCGI backend.
+# An example sysvinit script to help with this is shown given in the file
+# sysvinit-catalyst-fastcgi.example in this directory.
+#
+# See our installation help at https://fixmystreet.org/
+
+server {
+
+ listen 80 default_server;
+ root /var/www/fixmystreet/fixmystreet/web;
+ error_page 503 /down.html;
+
+ # Make sure that Javascript and CSS are compressed. (HTML is
+ # already compressed under the default configuration of the nginx
+ # package.)
+
+ gzip on;
+ gzip_disable "msie6";
+ gzip_types application/javascript application/x-javascript text/css;
+
+ client_max_body_size 10m;
+
+ # These rewrite rules are ported from the Apache configuration in
+ # conf/httpd.conf
+
+ rewrite ^/rss/council/([0-9]+)$ /rss/reports/$1 permanent;
+ rewrite ^/report$ /reports permanent;
+ rewrite '^/{/rss/(.*)}$' /rss/$1 permanent;
+ rewrite '^/reports/{/rss/(.*)}$' /rss/$1 permanent;
+ rewrite ^/alerts/?$ /alert permanent;
+
+ location /mapit {
+ proxy_pass https://mapit.mysociety.org/;
+ proxy_set_header X-Real-IP $remote_addr;
+ }
+
+ location / {
+ if (-f $document_root/down.html) {
+ return 503;
+ }
+ try_files $uri @catalyst;
+ }
+
+ location /down.html {
+ internal;
+ }
+
+ location @catalyst {
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header Host $host:8000;
+ proxy_redirect off;
+ proxy_pass http://fixmystreet.svc:9000;
+ }
+}