#!/usr/bin/env bash
set -euo pipefail

DOMAIN="${1:-91tvikun.icu}"
WWW_DOMAIN="${2:-www.${DOMAIN}}"
WEBROOT="/var/www/campus-express-site"
CONF_FILE="/etc/nginx/conf.d/campus-express-miniapp.conf"
CERT_DIR="/etc/nginx/ssl/${DOMAIN}"

cat >"${CONF_FILE}" <<NGINX
server {
    listen 80;
    listen [::]:80;
    server_name 47.116.16.57 ${DOMAIN} ${WWW_DOMAIN};

    location /.well-known/acme-challenge/ {
        root ${WEBROOT};
    }

    location / {
        return 301 https://\$host\$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name ${DOMAIN} ${WWW_DOMAIN};
    client_max_body_size 12m;

    ssl_certificate ${CERT_DIR}/fullchain.pem;
    ssl_certificate_key ${CERT_DIR}/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    root ${WEBROOT};
    index index.html;

    location / {
        try_files \$uri \$uri/ =404;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }

    location /static/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host \$host;
    }

    location /uploads/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host \$host;
    }

    location /source/ {
        alias /var/www/campus-express-miniapp/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
}
NGINX
