1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/conf/nginx/webvirtcloud.conf
catborise 2e4e9c78f8 fix(console): a VNC token works only in its user's session; refusals reach the Logs page
The VNC page's token travels in the websocket URL, so nginx's access log
and anyone who saw the URL had it for 120 s, and it opened the console as
a bearer token. novncd now also wants the session cookie of the token's
user. Its refusals were a warning without a user or an address: they now
name the client address (nginx sends X-Real-IP to novncd too) and leave
a Logs row "VNC console refused: reason".
2026-11-05 18:08:03 +03:00

61 lines
2 KiB
Text

# "https" from a TLS-terminating proxy in front of this nginx is kept; otherwise
# the scheme of this server is used. A client claiming https over plain HTTP
# only changes how its own request is handled (no redirect, secure cookies).
map $http_x_forwarded_proto $wvc_forwarded_proto {
default $scheme;
https https;
}
server {
listen 80;
#server_name webvirtcloud.example.com;
#access_log /var/log/nginx/webvirtcloud-access_log;
location /static/ {
alias /srv/webvirtcloud/staticfiles/;
# URLs carry no version: browsers revalidate (304 if unchanged), so an
# update or a theme change shows on the next load
expires -1;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $wvc_forwarded_proto;
proxy_set_header X-Request-ID $request_id;
proxy_connect_timeout 1800;
proxy_read_timeout 1800;
proxy_send_timeout 1800;
client_max_body_size 1024M;
}
location /novncd/ {
proxy_pass http://wsnovncd;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Serial console (socketiod); it refuses connections while
# SERIAL_CONSOLE_ENABLED is off. Host and the scheme go on for its
# same-origin check.
location /socket.io/ {
proxy_pass http://wssocketiod;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $wvc_forwarded_proto;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 1h;
}
}
upstream wsnovncd {
server 127.0.0.1:6080;
}
upstream wssocketiod {
server 127.0.0.1:6081;
}