fix: guard service worker cache.put against non-http(s) schemes; correct docs to match actual nginx domain mapping
This commit is contained in:
+5
-5
@@ -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
|
||||
|
||||
@@ -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
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user