fix: guard service worker cache.put against non-http(s) schemes; correct docs to match actual nginx domain mapping

This commit is contained in:
2026-09-27 19:56:34 +03:30
parent b01da2e04e
commit 112b196809
3 changed files with 15 additions and 12 deletions
+5 -5
View File
@@ -4,10 +4,10 @@ DB_PASSWORD=postgres
DB_NAME=dating_app
DB_PORT=5432
# پورت‌هایی که روی هاست منتشر می‌شن؛ نگینکس خودت رو به این پورت‌ها proxy_pass کن
APP_PORT=8080 # -> api.brainito.ir
WEB_PORT=3000 # -> brainito.ir
ADMIN_PORT=3001 # -> admin.brainito.ir
# پورت‌های داخلی کانتینرها (nginx خودت با نام کانتینر بهشون proxy_pass می‌ده، نه از این پورت‌ها روی هاست)
APP_PORT=8080 # -> brainito.ir
WEB_PORT=3000 # -> app.brainito.ir
ADMIN_PORT=3001 # -> panel.brainito.ir
# آدرس API که موقع build توی باندل کلاینت web/admin جاسازی می‌شه (باید از مرورگر کاربر قابل‌دسترس باشه)
PUBLIC_API_URL=https://api.brainito.ir/api/v1
PUBLIC_API_URL=https://brainito.ir/api/v1
+8 -6
View File
@@ -19,13 +19,15 @@ cp .env.example .env # مقادیر رو با دامنه/رمزهای واقع
docker compose up -d --build
```
این کار ۴ کانتینر بالا می‌آره: `postgres`, `backend` (پورت `APP_PORT`), `web` (پورت `WEB_PORT`), `admin` (پورت `ADMIN_PORT`).
کامپوز هیچ وب‌سروری بالا نمی‌آره؛ ریورس‌پروکسی و ساب‌دامین‌ها با nginx خودت روی هاست ست می‌شن، مثلاً:
این کار ۴ کانتینر بالا می‌آره: `postgres`, `backend`, `web`, `admin`.
کامپوز هیچ وب‌سروری بالا نمی‌آره؛ ریورس‌پروکسی و ساب‌دامین‌ها با nginx خودت روی هاست ست می‌شن. چون کانتینر nginx روی همون شبکه‌ی داکری این کامپوز نشسته، می‌تونه مستقیم با نام کانتینر بهشون proxy_pass بده (به‌جای پورت هاست):
| ساب‌دامین | proxy_pass به |
| دامنه | proxy_pass به |
|---|---|
| `brainito.ir` | `127.0.0.1:${WEB_PORT}` |
| `admin.brainito.ir` | `127.0.0.1:${ADMIN_PORT}` |
| `api.brainito.ir` | `127.0.0.1:${APP_PORT}` |
| `brainito.ir` | `http://dating-app-backend-1:8080` |
| `app.brainito.ir` | `http://dating-app-web-1:3000` |
| `panel.brainito.ir` | `http://dating-app-admin-1:3000` |
(نام کانتینرها بر اساس `name: dating-app` توی کامپوز و پیشوند سرویس ساخته می‌شن؛ اگه پروژه رو با نام دیگه‌ای بالا بیاری این نام‌ها عوض می‌شن.)
سکرت‌های اختصاصی بک‌اند (JWT، DB و...) توی `backend/.env` می‌مونن و از اونجا با `env_file` به سرویس `backend` پاس داده می‌شن؛ `.env` ریشه فقط برای متغیرهای مشترک کامپوز (پورت‌ها، اطلاعات پستگرس، آدرس عمومی API) استفاده می‌شه.
+2 -1
View File
@@ -24,13 +24,14 @@ self.addEventListener("fetch", (event) => {
const url = new URL(event.request.url);
if (event.request.method !== "GET") return;
if (!url.protocol.startsWith("http")) return;
if (url.pathname.startsWith("/api")) return;
event.respondWith(
fetch(event.request)
.then((res) => {
const resClone = res.clone();
caches.open(CACHE_NAME).then((cache) => cache.put(event.request, resClone));
caches.open(CACHE_NAME).then((cache) => cache.put(event.request, resClone).catch(() => {}));
return res;
})
.catch(() => caches.match(event.request))