Reverse Proxy Proxmox VNC With Nginx
Category : How-to
The noVNC console in the Proxmox Web GUI transfers it’s data through a technology called Websockets. Websockets often work in tandem with normal HTTP traffic and therefore often use the same end point (IP and port). Proxmox uses port 8006 by default for all web traffic; this includes the Web GUI you see and a websockets stream for the VNC console.
If you don’t already have Nginx set up, see my other post on How to reverse proxy the Proxmox Web GUI.
You’ll also need one of the more recent versions of Nginx for this to work.
If you use Nginx to reverse proxy your Proxmox Web GUI already, making it websocket compatible is very easy. In fact, it’s as easy as adding three additional lines to your Nginx config file for the location tag that serves your Proxmox Web GUI.
Open up your sites-available config file for your Proxmox site with a text editor:
vi /etc/nginx/sites-available/proxmox.jamescoyle.net
Find the location tag for your site and add the following:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
The resulting site should look similar to the below:
upstream proxmox { server 10.10.10.10; } server { listen 80 default_server; rewrite ^(.*) https://$host$1 permanent; } server { listen 443; server_name _; ssl on; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; proxy_redirect off; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass https://proxmox:8006; } }