diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 17a85d3..3c2e314 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -23,6 +23,15 @@ jobs: -w /app \ node:22-alpine sh -c "npm install && npm run build" + - name: Install Nginx config + run: | + mkdir -p /etc/nginx/conf.d 2>/dev/null + cp /tmp/web-projects/nginx/longde.cloud.conf /etc/nginx/conf.d/longde.cloud.conf + # fallback for sites-enabled style + mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled 2>/dev/null + cp /tmp/web-projects/nginx/longde.cloud.conf /etc/nginx/sites-available/longde.cloud.conf 2>/dev/null + ln -sf /etc/nginx/sites-available/longde.cloud.conf /etc/nginx/sites-enabled/longde.cloud.conf 2>/dev/null + - name: Deploy to web root run: | rm -rf /var/www/longde.cloud/* diff --git a/nginx/longde.cloud.conf b/nginx/longde.cloud.conf new file mode 100644 index 0000000..728174e --- /dev/null +++ b/nginx/longde.cloud.conf @@ -0,0 +1,51 @@ +server { + listen 80; + server_name longde.cloud www.longde.cloud; + + root /var/www/longde.cloud; + index index.html; + + # Gzip + gzip on; + gzip_vary on; + gzip_comp_level 5; + gzip_min_length 256; + gzip_types application/json text/plain text/css application/javascript image/svg+xml; + + # API proxy to NestJS backend (Docker container on port 3001) + location /api/ { + proxy_pass http://localhost:3001/api/; + 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; + proxy_read_timeout 90s; + proxy_connect_timeout 10s; + client_max_body_size 10m; + } + + # Swagger docs + location /api-docs { + proxy_pass http://localhost:3001/api-docs; + 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 /api-docs-json { + proxy_pass http://localhost:3001/api-docs-json; + 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; + } + + # Frontend — SPA fallback + location / { + try_files $uri $uri/ /index.html; + } +}