From 03209e07fc5dcf701e002f66ced339b74ef95cc1 Mon Sep 17 00:00:00 2001 From: WangDL Date: Mon, 18 May 2026 14:06:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20add=20nginx=20API=20proxy=20config=20for?= =?UTF-8?q?=20/api/*=20=E2=86=92=20backend=20:3001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add nginx/longde.cloud.conf with /api/* proxy_pass to localhost:3001 - Update deploy.yml to install nginx config before deploying - Fixes 405/502 errors when iOS app calls backend API Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/deploy.yml | 9 +++++++ nginx/longde.cloud.conf | 51 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 nginx/longde.cloud.conf 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; + } +}