From da62cac73ad86d3b48013ca60becb220b4369c71 Mon Sep 17 00:00:00 2001 From: uroma Date: Mon, 19 Jan 2026 19:38:34 +0000 Subject: [PATCH] docs: save working nginx config for rommark.dev Complete nginx configuration with proper WebSocket support: - Added connection_upgrade map for WebSocket upgrade handling - Configured /claude location with proper WebSocket headers - Set extended timeouts (7d) for WebSocket connections - Disabled buffering for real-time communication This config fixes the WebSocket closure issue that was preventing terminal commands from being executed. --- docs/nginx-rommark.dev.conf | 142 ++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 docs/nginx-rommark.dev.conf diff --git a/docs/nginx-rommark.dev.conf b/docs/nginx-rommark.dev.conf new file mode 100644 index 00000000..91af3cd4 --- /dev/null +++ b/docs/nginx-rommark.dev.conf @@ -0,0 +1,142 @@ +# Map for WebSocket connection upgrades +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 80; + server_name rommark.dev www.rommark.dev; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + server_name rommark.dev www.rommark.dev; + + root /hosting/rommark.dev/public; + index index.html; + + ssl_certificate /etc/letsencrypt/live/rommark.dev/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/rommark.dev/privkey.pem; + + # Blog routes - proxy to Next.js app + location /blog { + rewrite ^/blog/(.*)$ /$1 break; + proxy_pass http://127.0.0.1:8080; + 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; + } + + # Admin routes - proxy to Next.js app + location /admin { + proxy_pass http://127.0.0.1:8080; + 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; + } + + # Contact/Support page - proxy to Next.js app + location /contact { + proxy_pass http://127.0.0.1:8080; + 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; + } + + # Obsidian Web Interface - WITH PROPER WEBSOCKET SUPPORT + location /claude { + proxy_pass http://127.0.0.1:3010; + proxy_http_version 1.1; + + # WebSocket upgrade headers + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + # Standard headers + 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; + + # Extended timeouts for WebSocket + proxy_connect_timeout 7d; + proxy_send_timeout 7d; + proxy_read_timeout 86400; + + # Disable buffering for WebSocket + proxy_buffering off; + proxy_cache_bypass $http_upgrade; + proxy_request_buffering off; + } + + # Next.js static assets + location /_next { + proxy_pass http://127.0.0.1:8080; + proxy_http_version 1.1; + proxy_set_header Host $host; + } + + # Obsidian Web Interface API routes (must come before generic /api block) + location /api/projects { + proxy_pass http://127.0.0.1:3010; + 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/sessions { + proxy_pass http://127.0.0.1:3010; + 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/terminals { + proxy_pass http://127.0.0.1:3010; + 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/files { + proxy_pass http://127.0.0.1:3010; + 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; + } + + # API routes for Next.js + location /api { + proxy_pass http://127.0.0.1:8080; + 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; + } +}