不乱于心,不困于情,不畏将来,不念过往。
前言: 写在前面:文章由AI生成,内容可能与实际稍有不符。 参考文章:如何搭建一个免费的远程办公环境
要实现通过域名访问本地 http://localhost:5244 的 OpenList 服务,你需要结合内网穿透(将内网暴露到公网)和 Nginx 反向代理(绑定域名、处理SSL、隐藏端口)。
通常有两种主流架构,根据你的实际情况选择:
- 架构 A(推荐,有公网服务器): 域名解析 -> 公网服务器 Nginx -> Frp/Cpolar 穿透通道 -> 本地 OpenList。
- 架构 B(无公网服务器): 域名解析 -> Cloudflare Tunnel/Ngrok 等服务 -> 本地 OpenList。
鉴于你明确提到了 Nginx 反向代理,我将重点讲解架构 A(使用 VPS + Frp 内网穿透工具)的完整配置流程。
架构A:有公网服务器
点击查看
准备工作
- 一个域名:例如
openlist.yourdomain.com。 - 一台公网服务器:用于运行 Nginx 和 Frp 服务端。
- 本地电脑:运行 OpenList (端口 5544) 和 Frp 客户端。
配置域名解析
登录你的域名服务商控制台(如阿里云、Cloudflare等),添加一条 A 记录:
- 主机记录:
openlist(或者你想用的前缀) - 记录类型:
A - 记录值:你的公网服务器 IP 地址
搭建内网穿透
这里以开源工具 FRP (Fast Reverse Proxy) 为例。你需要两个文件:frps(服务端,放公网服务器)和 frpc(客户端,放本地电脑)。
1. 公网服务器配置
编辑 frps.toml (或 frps.ini):
bindPort = 7000# 设置穿透 token (密码),防止被滥用auth.token = "your_secure_password"
# 如果 Nginx 和 Frp 在同一台服务器,建议使用 127.0.0.1 进行连接# 但为了通用性,我们让 frps 监听一个端口供 Nginx 代理vhostHTTPPort = 8080启动服务端:./frps -c frps.toml
2. 本地电脑配置
编辑 frpc.toml (或 frpc.ini):
serverAddr = "你的公网服务器IP"serverPort = 7000auth.token = "your_secure_password"
[[proxies]]name = "openlist-web"type = "http"# 本地 OpenList 的地址和端口localIP = "127.0.0.1"localPort = 5544# 自定义域名,必须与 Nginx 代理的域名一致customDomains = ["openlist.yourdomain.com"]启动客户端:./frpc -c frpc.toml
原理说明:当请求到达公网服务器时,Frp 会根据请求头中的域名 (
Host) 判断这是 OpenList 的流量,并将其转发给本地的 5544 端口。
配置 Nginx 反向代理
在公网服务器上配置 Nginx,将域名请求转发给 Frp 监听的端口(即上面的 vhostHTTPPort = 8080)。
创建 Nginx 配置文件 /etc/nginx/conf.d/openlist.conf:
server { listen 80; server_name openlist.yourdomain.com; # 你的绑定域名
# 强制跳转 HTTPS (建议配置 SSL 后开启) # return 301 https://$host$request_uri;
location / { # 将请求转发给本地的 Frp 服务端端口 proxy_pass http://127.0.0.1:8080;
# 关键的 Header 传递 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;
# 支持 WebSocket (OpenList 可能需要) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
# 超时设置 proxy_connect_timeout 60s; proxy_read_timeout 600s; proxy_send_timeout 600s; }}重载 Nginx 配置:
nginx -t # 检查语法nginx -s reload配置 HTTPS (SSL 证书)
为了安全,强烈建议配置 HTTPS。你可以使用 Let’s Encrypt 免费证书。
使用 Certbot 自动配置:
# 安装 certbot (以 Ubuntu 为例)sudo apt install certbot python3-certbot-nginx
# 自动申请并修改 Nginx 配置sudo certbot --nginx -d openlist.yourdomain.comCertbot 会自动修改 Nginx 配置文件,添加 443 监听并自动续期。
架构B:无需公网服务器
点击查看
如果你没有公网服务器,可以使用 Cloudflare Tunnel,它集成了穿透和反向代理功能,甚至不需要自己配置 Nginx。
前置条件
- 拥有一个域名(例如
yourdomain.com)。 - 将域名的 DNS 托管迁移到 Cloudflare(在 Cloudflare 官网注册账号,添加站点,然后在域名注册商处修改 NS 服务器即可,全程免费)。
安装 Cloudflared 客户端
在你的本地电脑(运行 OpenList 的那台机器)上安装 cloudflared 工具。
- Windows: 下载 cloudflared.exe 并将其放入系统环境变量路径中,或者直接放在 OpenList 同目录下。
- Linux/Mac:
# Macbrew install cloudflare/cloudflare/cloudflared# Linux (Debian/Ubuntu)wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.debsudo dpkg -i cloudflared-linux-amd64.deb
登录认证
在本地终端(CMD 或 PowerShell 或 SSH)执行以下命令:
cloudflared tunnel login- 执行后会输出一个网址,点击链接打开浏览器。
- 在浏览器中选择你在 Cloudflare 上托管的域名(例如
yourdomain.com)并授权。 - 授权成功后,终端会显示 “You have successfully logged in”。
创建隧道
创建一个名为 openlist-tunnel 的隧道(名字可以自定义):
cloudflared tunnel create openlist-tunnel- 执行成功后,系统会生成一个 UUID,并生成一个凭证文件。
- 重要:记下生成的 UUID,后面会用到。
配置隧道(代替 Nginx 反向代理)
这是最关键的一步,相当于在配置 Nginx 的 proxy_pass。
创建一个配置文件 config.yml(建议放在 C:\Users\你的用户名\.cloudflared\ 目录下,或者 Linux 的 ~/.cloudflared/ 下)。
config.yml 内容如下:
tunnel: <你的隧道UUID>credentials-file: /root/.cloudflared/<你的隧道UUID>.json # Windows路径示例: C:\Users\Admin\.cloudflared\<UUID>.json
ingress: # 规则1:绑定域名指向本地 OpenList 地址 - hostname: openlist.yourdomain.com service: http://localhost:5544
# 规则2:兜底规则(必须要有) - service: http_status:404解释:
hostname: 你想要绑定的域名。service: 本地服务的地址,即http://localhost:5544。Cloudflare 会自动处理 HTTPS 加密,你本地只需提供 HTTP 服务即可。
添加 DNS 解析
将域名解析指向该隧道。执行以下命令:
cloudflared tunnel route dns openlist-tunnel openlist.yourdomain.com- 这条命令会自动在 Cloudflare 控制台添加一条 CNAME 记录,指向你的隧道。
第六步:启动隧道
一切准备就绪,启动服务:
cloudflared tunnel run openlist-tunnel如果输出类似 Connection registered 的日志,说明连接成功。
现在,访问 https://openlist.yourdomain.com,你就能穿透内网访问本地的 OpenList 了。
开机再次使用
- 以后都要手动启动(每次开机都要做)
按
Win + R,输入cmd回车。 输入启动命令:
cloudflared tunnel run yuqi-open⚠️注意:这个黑框框(命令行窗口)不能关闭,最小化即可。一旦关闭,服务就会停止。 2. 一劳永逸(设置开机自启,强烈建议)
- 以管理员身份打开 CMD:
- 搜索 cmd -> 右键 -> 以管理员身份运行。
- 执行安装命令:
- 输入以下命令(确保路径正确):
cloudflared --config C:\Users\48489\.cloudflared\config.yml service install- 启动服务:
net start cloudflared完成: 以后开机,它会自动在后台运行,您不需要再管它了。
进阶:如何像 Nginx 一样配置 HTTPS 和缓存?
在架构 B 中,你不需要手动配置 SSL 证书。Cloudflare 会自动为你的域名颁发通配符 SSL 证书,并强制开启 HTTPS。
如果你需要进行类似 Nginx 的高级配置(如 IP 黑名单、Basic Auth 密码保护、缓存规则),你需要登录 Cloudflare 控制台:
- 进入你的域名控制台。
- 点击左侧 SSL/TLS -> 将加密模式改为 Full (strict)(推荐,最安全)。
- 点击 Rules(规则):
- Page Rules: 可以添加规则,例如
Cache Level: Everything来缓存流量。 - Access: 可以添加“邮箱验证码登录”或“IP 限制”,比 Nginx 的
auth_basic更安全强大。
- Page Rules: 可以添加规则,例如
常见问题
-
能不能本地用 Nginx 再套一层? 如果你习惯使用 Nginx 配置(比如有复杂的重写规则),可以将架构改为:
Cloudflare Tunnel -> 本地 Nginx (监听 80) -> OpenList (5544)此时
config.yml中的 service 改为:service: http://localhost:80,然后在本地 Nginx 里配置反向代理到 5544。通常情况下直接连接 OpenList 更简单。 -
速度慢怎么办? Cloudflare 在国内访问速度尚可,但有时会不稳定。如果追求极致速度且没有公网 IP,建议考虑国内的穿透服务(如 Cpolar 或 Sakura Frp),但国内服务通常需要实名认证且需备案域名才能绑定自定义域名。Cloudflare 是目前无需备案域名绑定自定义域名的最佳方案。
-
电脑开机后,服务自动启动不了怎么办? 一键启动脚本:
@echo offchcp 65001 >nultitle Cloudflare Tunnel (管理员)echo 正在以管理员身份打开 CMD 并启动 Tunnel...echo.:: 以管理员身份打开 CMD 并执行 cloudflared tunnel run yuqi-openpowershell -Command "Start-Process cmd -ArgumentList '/k cd /d D:\cloudflared&& cloudflared tunnel run yuqi-open' -Verb RunAs"echo.echo 已启动,请查看弹出的管理员 CMD 窗口timeout /t 2 /nobreak >nul⚠️注意:以记事本或其他ide新建文件,保存为
.bat格式,将 脚本中D:\cloudflared改为你的cloudflared安装路径,双击运行即可。
🌈友情文章
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时









