summaryrefslogtreecommitdiff
path: root/.docker/web-nginx
diff options
context:
space:
mode:
Diffstat (limited to '.docker/web-nginx')
-rw-r--r--.docker/web-nginx/Dockerfile15
-rw-r--r--.docker/web-nginx/nginx.conf61
2 files changed, 76 insertions, 0 deletions
diff --git a/.docker/web-nginx/Dockerfile b/.docker/web-nginx/Dockerfile
new file mode 100644
index 000000000..679323b1c
--- /dev/null
+++ b/.docker/web-nginx/Dockerfile
@@ -0,0 +1,15 @@
+FROM registry.fakecake.org/docker.io/nginx:alpine
+
+HEALTHCHECK CMD curl --fail http://localhost/tt-rss/index.php || exit 1
+
+COPY nginx.conf /etc/nginx/templates/nginx.conf.template
+
+# By default, nginx will send the php requests to "app" server, but this server
+# name can be overridden at runtime by passing an APP_UPSTREAM env var
+ENV APP_UPSTREAM=${APP_UPSTREAM:-app}
+
+# It's necessary to set the following NGINX_ENVSUBST_OUTPUT_DIR env var to tell
+# nginx to replace the env vars of /etc/nginx/templates/nginx.conf.template
+# and put the result in /etc/nginx/nginx.conf (instead of /etc/nginx/conf.d/nginx.conf)
+# See https://github.com/docker-library/docs/tree/master/nginx#using-environment-variables-in-nginx-configuration-new-in-119
+ENV NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
diff --git a/.docker/web-nginx/nginx.conf b/.docker/web-nginx/nginx.conf
new file mode 100644
index 000000000..f7d47c453
--- /dev/null
+++ b/.docker/web-nginx/nginx.conf
@@ -0,0 +1,61 @@
+worker_processes auto;
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ access_log /dev/stdout;
+ error_log /dev/stderr warn;
+
+ sendfile on;
+
+ index index.php;
+
+ upstream app {
+ server ${APP_UPSTREAM}:9000;
+ }
+
+ server {
+ listen 80;
+ listen [::]:80;
+
+ root /var/www/html;
+
+ location /tt-rss/cache {
+ aio threads;
+ internal;
+ }
+
+ location /tt-rss/backups {
+ internal;
+ }
+
+ location ~ \.php$ {
+ # regex to split $uri to $fastcgi_script_name and $fastcgi_path
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+
+ # Check that the PHP script exists before passing it
+ try_files $fastcgi_script_name =404;
+
+ # Bypass the fact that try_files resets $fastcgi_path_info
+ # see: http://trac.nginx.org/nginx/ticket/321
+ set $path_info $fastcgi_path_info;
+ fastcgi_param PATH_INFO $path_info;
+
+ fastcgi_index index.php;
+ include fastcgi.conf;
+
+ fastcgi_pass app;
+ }
+
+ location / {
+ try_files $uri $uri/ =404;
+ }
+
+ }
+}