From 146aa044c91c0355f4dd4202142405c002264f22 Mon Sep 17 00:00:00 2001 From: Sascha Depold Date: Sun, 10 Sep 2023 20:51:52 +0200 Subject: [PATCH] Setup nginx --- ops/docker-compose.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ ops/nginx/feedr.conf | 33 +++++++++++++++++++++++++++++++++ ops/run.sh | 3 +++ ops/test-local.sh | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 ops/docker-compose.yml create mode 100644 ops/nginx/feedr.conf create mode 100755 ops/run.sh create mode 100755 ops/test-local.sh diff --git a/ops/docker-compose.yml b/ops/docker-compose.yml new file mode 100644 index 0000000..dcb655b --- /dev/null +++ b/ops/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.9" +services: + website: + image: ghcr.io/sdepold/feedr-web:1.12.0 + restart: always + deploy: + resources: + limits: + cpus: "0.5" + memory: 512M + reservations: + cpus: "0.5" + memory: 512M + api: + image: ghcr.io/sdepold/feedr-api:1.12.0 + restart: always + deploy: + resources: + limits: + cpus: "1.5" + memory: 1024M + reservations: + cpus: "1.5" + memory: 1024M + + nginx: + container_name: nginx + image: nginx:latest + ports: + - "80:80" + volumes: + - ./nginx:/etc/nginx/conf.d + restart: always + deploy: + resources: + limits: + memory: 256M + reservations: + memory: 256M + depends_on: + - api + - website diff --git a/ops/nginx/feedr.conf b/ops/nginx/feedr.conf new file mode 100644 index 0000000..867a9b5 --- /dev/null +++ b/ops/nginx/feedr.conf @@ -0,0 +1,33 @@ +server { + listen 80 default_server; + listen [::]:80 default_server; + + server_name feedrapp.info; + + access_log /var/log/nginx/feedr-access.log; + error_log /var/log/nginx/feedr-error.log error; + + location /api { + proxy_pass http://api:4000; + proxy_http_version 1.1; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + } + + location / { + if ($arg_q) { + rewrite ^ /api/ permanent; + } + + proxy_pass http://website:3000; + proxy_http_version 1.1; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + } +} diff --git a/ops/run.sh b/ops/run.sh new file mode 100755 index 0000000..9cf3110 --- /dev/null +++ b/ops/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker compose -f ops/docker-compose.yml up -d diff --git a/ops/test-local.sh b/ops/test-local.sh new file mode 100755 index 0000000..8c54631 --- /dev/null +++ b/ops/test-local.sh @@ -0,0 +1,35 @@ +if curl -Ls "http://localhost" | grep -q "Introduction"; then + echo "Feedr Website: Works" +else + echo "Feedr Website: Unavailable" +fi + +if curl -Ls "http://localhost/hosting" | grep -q "Hosting"; then + echo "Feedr Website (Hosting): Works" +else + echo "Feedr Website (Hosting): Unavailable" +fi + +if curl -Ls "http://localhost/?q=https://bitte.kaufen/magazin/feed/" | grep -q "bitte.kaufen Magazin für Eltern"; then + echo "Feedr API (forwarding): Works" +else + echo "Feedr API (forwarding): Unavailable" +fi + +if curl -Ls "http://localhost/api/?q=https://bitte.kaufen/magazin/feed/" | grep -q "bitte.kaufen Magazin für Eltern"; then + echo "Feedr API: Works" +else + echo "Feedr API: Unavailable" +fi + +if curl -Ls "http://localhost/api?q=https://bitte.kaufen/magazin/feed/" | grep -q "bitte.kaufen Magazin für Eltern"; then + echo "Feedr API (no trailing slash): Works" +else + echo "Feedr API (no trailing slash): Unavailable" +fi + +if curl -Ls "http://localhost/api?callback=foo&q=https://bitte.kaufen/magazin/feed/" | grep -q 'foo({"responseStatus":200'; then + echo "Feedr API (callback): Works" +else + echo "Feedr API (callback): Unavailable" +fi \ No newline at end of file