You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅能转发单个端口(443)时,如何通过子域名实现Proxmox及多服务的外网访问?

仅能转发单个端口(443)时,如何通过子域名实现Proxmox及多服务的外网访问?

绝对可以做到!这种场景下最常用的解决方案就是部署反向代理服务器——它就像一个智能流量分发网关,能根据访问的子域名,把外网来的请求精准转发到内网对应的服务上,完美适配你只能转发443端口的限制。

下面给你一步步讲具体怎么操作:

第一步:准备子域名解析

首先得把你需要的子域名(比如proxmox.example.com、jellyfin.example.com)都指向你的公网IP:

  • 如果是静态公网IP,直接在域名服务商的后台添加A记录,把每个子域名都指向你的公网IP即可。
  • 如果是动态公网IP,得搭配DDNS服务(很多路由器自带,或者用第三方工具),让域名自动跟随公网IP更新。

第二步:部署反向代理服务器

推荐用Caddy或者Nginx,两者都能搞定,Caddy的优势是自动管理SSL证书,新手友好;Nginx则更灵活,适合有一定基础的用户。

方案一:用Caddy(推荐新手)

  1. 先在你的一台内网服务器(可以是专门的小主机,甚至是Proxmox里的一个虚拟机)上安装Caddy。
  2. 创建并编辑Caddy配置文件Caddyfile,内容如下:
proxmox.example.com {
    # 转发到内网Proxmox的管理端口(默认8006)
    reverse_proxy http://192.168.x.x:8006
    # 如果Proxmox强制HTTPS,也可以改成下面这样,跳过证书验证(内网证书一般是自签的)
    # reverse_proxy https://192.168.x.x:8006 {
    #     transport http {
    #         tls_insecure_skip_verify
    #     }
    # }
}

jellyfin.example.com {
    # 转发到内网Jellyfin的端口(默认8096)
    reverse_proxy http://192.168.x.y:8096
}
  1. 启动Caddy,它会自动向Let's Encrypt申请免费的SSL证书,不用你手动处理443端口的证书问题,非常省心。

方案二:用Nginx

  1. 安装Nginx后,创建一个新的配置文件(比如/etc/nginx/sites-available/service-proxy.conf):
# Proxmox子域名配置
server {
    listen 443 ssl;
    server_name proxmox.example.com;

    # 这里可以用certbot自动生成SSL证书,或者手动指定证书路径
    ssl_certificate /etc/letsencrypt/live/proxmox.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/proxmox.example.com/privkey.pem;

    location / {
        proxy_pass http://192.168.x.x:8006;
        # 传递必要的请求头,确保服务能正确识别来源
        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;
        
        # 如果转发HTTPS的Proxmox,需要添加以下两行跳过证书验证
        # proxy_pass https://192.168.x.x:8006;
        # proxy_ssl_verify off;
    }
}

# Jellyfin子域名配置
server {
    listen 443 ssl;
    server_name jellyfin.example.com;

    ssl_certificate /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jellyfin.example.com/privkey.pem;

    location / {
        proxy_pass http://192.168.x.y:8096;
        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;
    }
}
  1. 用certbot工具自动申请并配置SSL证书(执行certbot --nginx即可,跟着提示走)。
  2. 启用配置文件:ln -s /etc/nginx/sites-available/service-proxy.conf /etc/nginx/sites-enabled/,然后重启Nginx:systemctl restart nginx。

第三步:配置路由器端口转发

在你的路由器后台,找到端口转发设置,把公网的443端口转发到反向代理服务器的内网IP的443端口。这样所有外网来的HTTPS请求(443端口)都会先打到反向代理服务器,再由它根据子域名分发到对应的服务。

一些注意事项

  • 确保内网中反向代理服务器能访问到Proxmox、Jellyfin等服务的对应端口,内网防火墙不要拦截这些请求。
  • 如果用Proxmox的HTTPS端口转发,记得跳过证书验证,因为Proxmox默认用的是自签证书,反向代理会验证失败。
  • 要是你的公网IP是动态的,一定要配置DDNS,不然IP变动后域名解析就失效了。

备注:内容来源于stack exchange,提问作者Ari Hall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:39:06