Files
nginx-samples/nginx-examples.txt
jonathan_richards bfea0d5c90 added examples file
Node-js open wen socket refresh issues in client apps can be caused by Nginx proxy mis-configs.
See optimization examples here.
2026-09-04 15:43:05 +00:00

111 lines
3.7 KiB
Plaintext
Raw Permalink 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.
# /etc/nginx/sites-available/myapp
# Required for WebSocket upgrade handling
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream node_backend {
server 127.0.0.1:3000;
# Keep connections to Node alive
keepalive 32;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
# Your existing SSL configuration
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# -------------------------------------------------------
# Dynamic Node.js application
# -------------------------------------------------------
location / {
proxy_pass http://node_backend;
# HTTP/1.1 is important for keep-alive/WebSocket/SSE
proxy_http_version 1.1;
# Preserve original request information
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;
# WebSocket support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# ---------------------------------------------------
# IMPORTANT FOR DYNAMIC/STREAMING APPLICATIONS
# ---------------------------------------------------
# Don't allow Nginx to hold dynamic responses in buffers
proxy_buffering off;
# Don't cache application responses
proxy_cache off;
# Don't buffer requests either
proxy_request_buffering off;
# Long-running Node connections
proxy_connect_timeout 10s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
# Keep connection alive
proxy_socket_keepalive on;
# Don't rewrite redirects unexpectedly
proxy_redirect off;
}
# -------------------------------------------------------
# Optional explicit WebSocket endpoint
# Change /socket.io/ to whatever your application uses
# -------------------------------------------------------
location /socket.io/ {
proxy_pass http://node_backend;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_buffering off;
proxy_cache off;
proxy_connect_timeout 10s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
proxy_socket_keepalive on;
}
}
==================================
I would also explicitly prevent browser caching
For dynamic API responses, I’d consider:I would also explicitly prevent browser caching
For dynamic API responses, I’d consider:
==================================
location /api/ {
proxy_pass http://node_backend;
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;
proxy_buffering off;
proxy_cache off;
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0" always;
add_header Pragma "no-cache" always;
add_header Expires "0" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
===========================
Check for :
===========================
proxy_http_version 1.1;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_socket_keepalive on;
=======================