为了偷懒,我安装了 nginx,直接访问 proxmox.domain.com 而不是 proxmox.domain.com:8006,但现在连接到第一个地址时无法访问 VNC 客户端,尽管我可以执行 ip+port。我的一个朋友指出我必须转发 Web 套接字,所以我敲了敲键盘,谷歌了一下,找到了这。我尝试了里面的所有方法,但不起作用。我重新启动了 nginx,它说配置文件有效。
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass https://localhost:8006;
}
location /websockify {
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:6080;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# VNC connection timeout
proxy_read_timeout 3600s;
#disable cache
proxy_buffering off;
}
location /vncws/ {
proxy_pass http://127.0.0.1:6080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
这是我的配置块/etc/nginx/sites-enabled/proxmox
。我做错了什么?
答案1
此配置对我有用,并且能完成您想要完成的所有任务。它还会自动将 http 请求重定向到 https。在我的配置中,我通过 letsencrypt 生成了自己的 SSL 证书,以进行正确的 CA 身份验证。
upstream proxmoxhost {
server localhost:8006;
}
server {
listen 80 http2;
listen [::]:80 http2;
server_name proxmox.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name proxmox.domain.com;
ssl_certificate /etc/dehydrated/certs/star_domain_com/fullchain.pem;
ssl_certificate_key /etc/dehydrated/certs/star_domain_com/privkey.pem;
location / {
proxy_pass https://proxmoxhost/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
}
注意 proxy_pass 指令中的尾部斜杠,如果没有它,浏览器内的 VNC 连接就无法工作。