KPanel 反向代理建站教程:从 IP 端口到域名 + HTTPS,四步完成

一台服务器上跑着好几个网站,却只有一个 80 和一个 443 端口,该怎么办?答案就是反向代理:让 Nginx 统一接收请求,再根据域名转交给不同的后端程序。

这篇教程根据本期 KPanel 实操视频整理,从安装面板、准备后端,到域名解析、自动申请 HTTPS 证书,一步步把 IP:端口 变成能用域名访问的网站。已经装好 KPanel、也有正在运行的应用,可以直接从域名解析开始。

先弄明白:反向代理解决了什么问题?

很多 Web 应用启动后会监听 3000、8000、18090 这样的端口。直接通过 IP 加端口访问,要记住端口号,使用 HTTP 时通信也没有加密。加上反向代理之后,访问链路变成:

浏览器 → https://proxy.example.com
       → Nginx 的 443 端口(处理 HTTPS 证书)
       → http://127.0.0.1:18090(后端应用)

Nginx 按域名选择站点,后端照常处理业务。多个域名可以分别对应不同程序,共用服务器的 80 / 443 端口;证书也可以集中在 Nginx 这一层管理。后端如果在另一台机器上,代理到后端这一段是否需要 HTTPS,要另行考虑。

KPanel 把创建站点、填写上游、申请证书和加载配置整合到了界面里,常规建站不需要自己编写 Nginx 配置。

开始之前,准备这些东西

  • 一台可以通过 SSH 管理的 Linux 服务器。
  • 一个自己能修改 DNS 记录的域名。
  • 已安装的 KPanel,以及一个能正常响应的后端 Web 服务。
  • 服务器防火墙和云厂商安全组允许 TCP 80、443 入站。

本期视频使用莱卡云日本 BGP 服务器,录制时配置为 8 核 CPU、8 GB 内存、100 Mbps 带宽、每月 500 GB 流量,系统为 Debian 13。这是演示环境,不是反代建站的最低配置;已有服务器也可以跟着操作。莱卡云入口可以在科技lion导航站查找,具体套餐以商家页面为准。

下文用 proxy.example.com 作为示例域名,请替换成自己的域名。截图中的域名和 IP 属于视频演示环境。

一、安装 KPanel 并初始化管理员

使用 root 用户 SSH 登录服务器,执行 KPanel 官方安装入口:

bash <(curl -fsSL https://kejilion.sh) app kpanel

按照菜单选择安装。本期演示使用默认对外端口 8080,安装完成后,终端会显示访问地址和一次性的初始化 Token。打开终端给出的地址,填写 Token,设置管理员用户名和密码。

视频中的管理员密码要求至少 12 位,并包含字母和数字;实际以当前页面提示为准。初始化成功后,一次性 Token 失效,之后使用管理员账户登录。Token 不要放进公开截图或文章。

安装命令可在KPanel 官方项目核对。已有面板的读者无需重复安装。

二、准备并检查后端服务

视频使用名为 lion-demo 的自定义 Python 演示站,宿主机端口为 18090,页面可以展示转发请求头。如果你已有应用,先确认它的端口和访问协议即可。

如果只想快速跑通流程,下面是供本文复现使用的最小示例:用 Nginx 默认欢迎页作为后端,不依赖视频中的自定义程序文件。

docker run -d --name lion-demo --restart unless-stopped \
  -p 127.0.0.1:18090:80 nginx:alpine

docker ps --filter name=lion-demo
curl -I http://127.0.0.1:18090

容器显示运行中、本机请求返回 200,说明这个示例后端已准备好。容器名和端口若已被占用,请换成未使用的值,并同步修改后续上游地址。

-p 127.0.0.1:18090:80 将后端端口绑定到宿主机回环地址。这样不需要为了测试先把 18090 暴露到公网。视频为对比效果演示过 IP 加端口直连,正式使用时建议保留本机或受控内网入口即可。端口绑定规则见Docker 官方说明。

注意网络位置:下面的 127.0.0.1 方案要求 Nginx 能访问宿主机回环地址。如果你自行把 Nginx 放进独立的 Docker 桥接网络,容器内的 127.0.0.1 指向容器自身,需要改用实际可达的内网地址或同一 Docker 网络中的服务名。

三、把域名解析到服务器

进入 KPanel 桌面,打开网站 → 新建网站。窗口会提示需要添加指向服务器 IP 的 A 记录,并提供常用 DNS 平台入口。

以 Cloudflare 为例,在域名的 DNS 页面添加:

字段 填写内容
类型 A
名称 proxy
IPv4 地址 你自己的服务器公网 IPv4
代理状态 首次搭建先使用「仅 DNS」,即灰色云朵

保存后,确认解析结果指向目标服务器,再继续申请证书。DNS 生效时间受缓存、TTL 和原有记录影响,不能只凭“已经点保存”判断。

nslookup proxy.example.com

有可用的公网 IPv6,并且 IPv6 的 80 / 443 也能正常访问时,可以添加 AAAA 记录。没有配置好 IPv6,就先不要添加;已有错误的 AAAA 记录也需要检查,避免部分访问或证书验证走到错误地址。

先使用「仅 DNS」便于把解析、源站和证书问题分开排查。网站正常后,再根据需要开启 Cloudflare 代理。

四、一键创建反向代理和 HTTPS

回到 KPanel 的新建网站窗口,按下面填写:

  1. 主机名:填自己的域名,例如 proxy.example.com。使用普通域名建站时,不要把 https:// 或页面路径一起填进去。
  2. 建站方式:选择「IP / 端口反代」。
  3. 上游地址:填 http://127.0.0.1:18090,或者填实际应用的可达地址。
  4. HTTPS 证书:保持「自动申请或复用」;按提示完成证书处理。
  5. 核对后点击「一键创建反向代理」,等待任务完成。
KPanel 新建网站窗口:选择 IP / 端口反代并填写上游地址
视频实操截图:选择「IP / 端口反代」。截图里的 3000 是输入框示例,本教程实际后端端口为 18090。

不记得应用端口时,可以使用窗口里的本机 Web 服务扫描功能。KPanel 会整理正在监听的 TCP 端口;找到自己的容器或服务后,点击「填入」,再核对协议和端口。扫描到监听端口,只说明有程序监听,并不代表它一定是 HTTP 服务。

视频中,18090 对应 lion-demo;8080 是 KPanel 自己,不能因为看到了就当作演示站的上游。没有可复用证书时,演示流程会申请 Let's Encrypt 免费证书;也可以按需要选择自定义证书。

窗口还提供指定路径的访问密码选项。给管理页面或临时工具增加一层账号密码时,可以按需要设置。创建完成后,在站点详情里查看上游地址、证书到期时间和配置文件位置。

五、怎样确认真的搭建成功?

先在浏览器打开 https://proxy.example.com:页面应显示自己的后端内容,浏览器的连接信息中应显示证书有效、域名匹配。不同浏览器可能使用锁形或其他站点信息图标。

再用终端检查跳转和 HTTPS 响应,记得替换域名:

curl -I http://proxy.example.com
curl -I https://proxy.example.com
  • 视频中的 HTTP 请求返回 301,跳转目标为对应 HTTPS 地址。
  • HTTPS 请求返回 200,后端页面正常打开。实际应用有登录跳转时,也可能返回预期的 302 等状态。
  • 站点详情中的上游应与实际后端一致,例如 http://127.0.0.1:18090。

视频的自定义演示站还会显示 Host、X-Forwarded-Proto 和 X-Real-IP,可以辅助核对域名、外部协议和代理传递的客户端地址。本文的最小 Nginx 欢迎页示例不会显示这些字段。

应用使用这些请求头判断协议或访客 IP 时,应只信任来自受控反向代理的头部。若前面还接了 Cloudflare,真实客户端地址需要结合源站的可信代理配置处理,不能一概把任意请求中的 X-Real-IP 当作可信身份。

常见问题:按这个顺序排查

1. HTTPS 证书申请失败

先检查 A / AAAA 是否正确、解析是否生效,再检查云安全组和服务器防火墙的 TCP 80 / 443。首次排查可先关闭 Cloudflare 代理,确认请求能到达这台服务器;具体失败原因以 KPanel 任务日志为准。

2. 网站出现 502 Bad Gateway

先在反向代理所在的网络环境访问上游。若本机 curl 都失败,优先检查应用是否启动、端口是否正确;宿主机可访问而 Nginx 仍失败,再看容器网络和地址是否可达。后端只提供 HTTP 时,上游也应填 http://。

3. 开启 Cloudflare 橙色云朵后异常

先让源站 HTTPS 正常,再开启代理。本教程已经给源站申请有效证书,建议使用 SSL/TLS → 完全(严格),同时校验源站证书有效期和域名。不要使用 Flexible 模式去回源一个强制跳转 HTTPS 的站点,以免产生重定向循环。配置要求见Cloudflare 官方说明。

4. 域名可以访问,但 IP 加端口还可以直连

创建反向代理本身不会自动关闭后端公网入口。检查应用监听地址和 Docker 端口映射,按需要改为本机或受控内网访问。本文提供的最小示例从一开始就将 18090 绑定到了 127.0.0.1。

同一台服务器,继续添加更多网站

再部署一个后端、添加另一个子域名,重复准备后端 → 域名解析 → 新建反代 → 验证访问即可。不同网站使用各自的上游地址,外部仍然统一通过 80 / 443 访问。

这套流程做成的事情很直接:让原本需要 IP 加端口访问的应用,拥有自己的域名和 HTTPS 入口。后续修改端口或证书时,也可以回到 KPanel 的对应站点继续管理。

相关入口:KPanel 开源项目 · KPanel 官网 · KPanel 安装图文教程

版权声明:
作者:KEJILION
链接:https://blog.kejilion.pro/kpanel-reverse-proxy-https-tutorial/
来源:科技lion官方博客【国内版】
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>