Files
netrunner-landing/nginx/landing-ssl.conf
T
nineap bb77a76200
Build & Push Image / Build and push to Gitea Registry (push) Successful in 1m46s
Fix: nginx-конфиг для cms.netrunner-vpn.com + задвоенный /cms-api/api/api/ на проде
- cms.netrunner-vpn.com не имел своего vhost на новом проде после переезда
  CMS с французского сервера — падал 502 (уходил в чужой server_name).
  Добавлены cms-http.conf/cms-ssl.conf (Basic Auth + сертификат), deploy-nginx.yml
  теперь синкает и их.
- landing-ssl.conf: /cms-api/ проксировал в /api/ одним location, из-за чего
  запросы PocketBase SDK (уже содержащие /api/ после /cms-api/) задваивались
  в /api/api/... и 404-ились. Добавлен точный /cms-api/api/ location + общий
  fallback с rewrite — как было руками пропатчено на старом сервере, но не
  попало в репозиторий.
2026-07-11 02:26:39 +07:00

71 lines
3.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Часть 2/2 — деплой включает этот файл ТОЛЬКО когда сертификат уже есть.
# ВАЖНО: сертификат выпускается ОДНОЙ командой на оба домена сразу (см.
# .gitea/workflows/deploy-nginx.yml у netrunner-backend, туда же убегает
# первый -d) — папка в /etc/letsencrypt/live называется по ПЕРВОМУ домену,
# account.netrunner-vpn.com, а не netrunner-vpn.com, даже для этого файла.
#
# Реальный IP посетителя — из CF-Connecting-IP, см.
# /etc/nginx/conf.d/cloudflare-real-ip.conf на самом сервере (общий для всех
# доменов на этом VPS, не часть этого репозитория).
#
# Три бэкенда за одним доменом:
# / -> сам лендинг (Next.js, :3000)
# /cms-api/* -> PocketBase (:8090). PB_PUBLIC_URL в docker-compose.yml =
# ".../cms-api" — сам PocketBase JS SDK достраивает к нему
# свой нативный "/api/..." (records, files и т.д.), так что
# реальные запросы всегда выглядят как "/cms-api/api/...".
# Один location с proxy_pass .../api/ тут НЕ работает: nginx
# отрезает только совпавший префикс "/cms-api/" и приклеивает
# остаток к ".../api/", получая задвоенное ".../api/api/..."
# (404 у PocketBase). Поэтому ниже два location: точный
# "/cms-api/api/" — рабочий случай SDK, и общий "/cms-api/"
# с rewrite — просто на случай прямых ссылок без "/api/".
# /api/* -> proxy-ws (:3001) — его собственные роуты уже объявлены
# с префиксом /api (comments, speedtest), никакой замены
# префикса не нужно, только вебсокет-апгрейд заголовки
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name netrunner-vpn.com;
ssl_certificate /etc/letsencrypt/live/account.netrunner-vpn.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/account.netrunner-vpn.com/privkey.pem;
location /cms-api/api/ {
proxy_pass http://127.0.0.1:8090/api/;
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 /cms-api/ {
rewrite ^/cms-api/(.*) /$1 break;
proxy_pass http://127.0.0.1:8090;
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/ {
proxy_pass http://127.0.0.1:3001;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}