about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compose/nginx/conf.d/dybiec.info.conf168
-rw-r--r--compose/nginx/nginx.conf2
-rw-r--r--docker.yml13
-rw-r--r--domains.yml34
-rw-r--r--templates/nginx.conf.j232
5 files changed, 81 insertions, 168 deletions
diff --git a/compose/nginx/conf.d/dybiec.info.conf b/compose/nginx/conf.d/dybiec.info.conf
deleted file mode 100644
index 90cd471..0000000
--- a/compose/nginx/conf.d/dybiec.info.conf
+++ /dev/null
@@ -1,168 +0,0 @@
-server {
-  listen 80;
-  listen 443 ssl;
-  server_name .dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    root /usr/share/nginx/html;
-    index index.html;
-  }
-
-}
-server {
-  listen 80;
-  listen 443 ssl;
-  server_name cnt.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://localhost:5004;
-  }
-}
-server {
-  listen 80;
-  listen 443 ssl;
-  server_name registry.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://localhost:5000;
-    proxy_set_header  Host              $http_host;   # required for docker client's sake
-    proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
-    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
-    proxy_set_header  X-Forwarded-Proto $scheme;
-    client_max_body_size 0;
-  }
-}
-server {
-       listen         80;
-       server_name    git.dybiec.info;
-       return         301 https://$server_name$request_uri;
-}
-server {
-  listen 443 ssl;
-  server_name git.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://localhost:5001;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $http_host;
-    proxy_redirect off;
-    proxy_http_version 1.1;
-  }
-  gzip_proxied any;
-  gzip_types
-    text/css
-    text/javascript
-    text/xml
-    text/plain
-    application/javascript
-    application/x-javascript
-    application/json;
-
-}
-server {
-       listen         80;
-       server_name    grafana.dybiec.info;
-       return         301 https://$server_name$request_uri;
-}
-server {
-  listen 443 ssl;
-  server_name grafana.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://localhost:5002;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $http_host;
-    proxy_redirect off;
-    proxy_http_version 1.1;
-  }
-  gzip_proxied any;
-  gzip_types
-    text/css
-    text/javascript
-    text/xml
-    text/plain
-    application/javascript
-    application/x-javascript
-    application/json;
-
-}
-server {
-       listen         80;
-       server_name    prometheus.dybiec.info;
-       return         301 https://$server_name$request_uri;
-}
-server {
-  listen 443 ssl;
-  server_name prometheus.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://localhost:5003;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $http_host;
-    proxy_redirect off;
-    proxy_http_version 1.1;
-  }
-  gzip_proxied any;
-  gzip_types
-    text/css
-    text/javascript
-    text/xml
-    text/plain
-    application/javascript
-    application/x-javascript
-    application/json;
-
-}
-server {
-       listen         80;
-       server_name    octoprint.dybiec.info;
-       return         301 https://$server_name$request_uri;
-}
-server {
-  listen 443 ssl;
-  server_name octoprint.dybiec.info;
-
-  ssl_certificate     /etc/letsencrypt/live/dybiec.info/fullchain.pem;
-  ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
-  
-  location / {
-    proxy_pass http://192.168.255.6/;
-    proxy_redirect off;
-    proxy_http_version 1.1;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $http_host;
-    proxy_set_header X-Real-IP $remote_addr;
-    proxy_set_header Upgrade $http_upgrade;
-    proxy_set_header Connection "Upgrade";
-
-    client_max_body_size 0;    
-  }
-  gzip_proxied any;
-  gzip_types
-    text/css
-    text/javascript
-    text/xml
-    text/plain
-    application/javascript
-    application/x-javascript
-    application/json;
-
-}
diff --git a/compose/nginx/nginx.conf b/compose/nginx/nginx.conf
index aa6cbd7..fc640c2 100644
--- a/compose/nginx/nginx.conf
+++ b/compose/nginx/nginx.conf
@@ -19,6 +19,8 @@ http {
                       '"$http_user_agent" "$http_x_forwarded_for"';
 
     access_log  /var/log/nginx/access.log  main;
+    ssl_certificate	/etc/letsencrypt/live/dybiec.info/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem;
 
     sendfile        on;
     tcp_nopush     on;
diff --git a/docker.yml b/docker.yml
index cd86979..806309a 100644
--- a/docker.yml
+++ b/docker.yml
@@ -4,11 +4,24 @@
   remote_user: ansible_worker
   vars:
     docker_compose_dir: "~/compose"
+  vars_files:
+  - domains.yml
   tasks:
+  - name: Remove old config
+    file:
+      path: "{{docker_compose_dir}}"
+      state: absent
   - name: Synchronize docker-compose files
     synchronize:
       src: compose/
       dest: "{{docker_compose_dir}}"
+  - name: Generate nginx conf
+    template:
+      src: templates/nginx.conf.j2
+      dest: "{{docker_compose_dir}}/nginx/conf.d/{{item.value.name}}.conf"
+    vars:
+      server: "{{item.value}}"
+    with_items: "{{domains | dict2items}}"
   - name: Counter app
     docker_service:
       project_name: app
diff --git a/domains.yml b/domains.yml
new file mode 100644
index 0000000..79e8ef4
--- /dev/null
+++ b/domains.yml
@@ -0,0 +1,34 @@
+---
+domains:
+  main:
+    name: ".dybiec.info"
+    dir: "/usr/share/nginx/html"
+  registry:
+    name: "registry.dybiec.info"
+    proxy:
+      port: 5000
+  git:
+    name: "git.dybiec.info"
+    http_redirect: true
+    proxy:
+      port: 5001
+  grafana:
+    name: "grafana.dybiec.info"
+    http_redirect: true
+    proxy:
+      port: 5002
+  prometheus:
+    name: "prometheus.dybiec.info"
+    http_redirect: true
+    proxy:
+      port: 5003
+  cnt:
+    name: "cnt.dybiec.info"
+    proxy:
+      port: 5004
+  octoprint:
+    name: "octoprint.dybiec.info"
+    http_redirect: true
+    proxy:
+      host: "192.168.255.6"
+
diff --git a/templates/nginx.conf.j2 b/templates/nginx.conf.j2
new file mode 100644
index 0000000..69b8d36
--- /dev/null
+++ b/templates/nginx.conf.j2
@@ -0,0 +1,32 @@
+{% if server.http_redirect is defined and server.http_redirect %}
+server {
+       listen         80;
+       server_name    {{ server.name }};
+       return         301 https://$server_name$request_uri;
+}
+{% endif %}
+
+server {
+  {% if server.http_redirect is not defined or not server.http_redirect %}
+  listen 80;
+  {% endif %}
+  listen 443 ssl;
+  server_name {{ server.name }};
+
+  location / {
+    {% if server.dir is defined %}
+    root {{ server.dir }};
+    index index.html;
+    {% endif %}
+    {% if server.proxy is defined %}
+    proxy_pass http://{{server.proxy.host|default("localhost")}}:{{server.proxy.port|default("80")}};
+    proxy_set_header  X-Real-IP         $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header Host $http_host;
+    proxy_set_header  X-Forwarded-Proto $scheme;
+    proxy_redirect off;
+    proxy_http_version 1.1;
+    {% endif %}
+  }
+
+}