worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; proxy_connect_timeout 1600; proxy_send_timeout 1600; proxy_read_timeout 1600; send_timeout 1600; server { listen 4408 default_server; access_log off; error_log off; gzip on; gzip_vary on; gzip_proxied any; gzip_proxied expired no-cache no-store private auth; gzip_comp_level 4; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/json application/xml; root /usr/share/fluidd; index index.html; server_name _; client_max_body_size 0; proxy_request_buffering off; location / { try_files $uri $uri/ /index.html; } location = /index.html { add_header Cache-Control "no-store, no-cache, must-revalidate"; } location /websocket { proxy_pass http://apiserver/websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400; } location ~ ^/(printer|api|access|machine|server)/ { proxy_pass http://apiserver$request_uri; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; } location /webcam/ { proxy_pass http://mjpgstreamer1/; } location /webcam2/ { proxy_pass http://mjpgstreamer2/; } location /webcam3/ { proxy_pass http://mjpgstreamer3/; } location /webcam4/ { proxy_pass http://mjpgstreamer4/; } } server { listen 4409 default_server; access_log off; error_log off; gzip on; gzip_vary on; gzip_proxied any; gzip_proxied expired no-cache no-store private auth; gzip_comp_level 4; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/json application/xml; root /usr/data/mainsail; index index.html; server_name _; client_max_body_size 0; proxy_request_buffering off; location / { try_files $uri $uri/ /index.html; } location = /index.html { add_header Cache-Control "no-store, no-cache, must-revalidate"; } location /websocket { proxy_pass http://apiserver/websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400; } location ~ ^/(printer|api|access|machine|server)/ { proxy_pass http://apiserver$request_uri; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; } location /webcam/ { postpone_output 0; proxy_buffering off; proxy_ignore_headers X-Accel-Buffering; access_log off; error_log off; proxy_pass http://mjpgstreamer1/; } location /webcam2/ { postpone_output 0; proxy_buffering off; proxy_ignore_headers X-Accel-Buffering; access_log off; error_log off; proxy_pass http://mjpgstreamer2/; } location /webcam3/ { postpone_output 0; proxy_buffering off; proxy_ignore_headers X-Accel-Buffering; access_log off; error_log off; proxy_pass http://mjpgstreamer3/; } location /webcam4/ { postpone_output 0; proxy_buffering off; proxy_ignore_headers X-Accel-Buffering; access_log off; error_log off; proxy_pass http://mjpgstreamer4/; } } map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream apiserver { ip_hash; server 127.0.0.1:7125; } upstream mjpgstreamer1 { ip_hash; server 127.0.0.1:8080; } upstream mjpgstreamer2 { ip_hash; server 127.0.0.1:8081; } upstream mjpgstreamer3 { ip_hash; server 127.0.0.1:8082; } upstream mjpgstreamer4 { ip_hash; server 127.0.0.1:8083; } }