From 65c1f104994a36405ecca256f2f1b0182e7297ad Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sun, 28 Jun 2026 02:35:08 +0200 Subject: [PATCH] Fix nginx proxy port (3001), add nginx.conf to Dockerfile, add /ws proxy, fix WebSocketProvider for production URLs --- frontend/Dockerfile | 1 + frontend/nginx.conf | 15 ++++++++++++++- frontend/src/crdt/WebSocketProvider.ts | 3 ++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 18e4f4b..e86373d 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -9,5 +9,6 @@ RUN npm run build # Production stage FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/frontend/nginx.conf b/frontend/nginx.conf index b8bf277..5751417 100644 --- a/frontend/nginx.conf +++ b/frontend/nginx.conf @@ -12,7 +12,20 @@ server { # Proxy API requests to backend location /api/ { - proxy_pass http://backend:5000; + proxy_pass http://backend:3001; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + 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 WebSocket requests to backend + location /ws/ { + proxy_pass http://backend:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; diff --git a/frontend/src/crdt/WebSocketProvider.ts b/frontend/src/crdt/WebSocketProvider.ts index 63d5b08..5003440 100644 --- a/frontend/src/crdt/WebSocketProvider.ts +++ b/frontend/src/crdt/WebSocketProvider.ts @@ -5,7 +5,8 @@ export class WebSocketProvider { provider: WebsocketProvider; constructor(doc: Y.Doc, projectId: string, jwtToken: string) { - const url = `ws://localhost:3001/project:${projectId}`; + const proto = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + const url = `${proto}//${window.location.host}/ws/collab`; this.provider = new WebsocketProvider(url, `project:${projectId}`, doc, { params: { token: jwtToken } });