别再折腾ngrok了!轻量级工具Slim如何让localhost秒变正规HTTPS域名
【免费下载链接】slimGive your localhost a local or public URL项目地址: https://gitcode.com/gh_mirrors/slim30/slim
Slim是一款轻量级命令行工具,一条命令就能为 localhost 项目生成带真实证书的正规 HTTPS 本地域名(如https://myapp.test),还能把本地端口一键暴露成公网 URL,堪称 ngrok 的极简替代品。无需复杂配置,macOS 和 Linux 开箱即用,让本地开发体验瞬间接近生产环境。
为什么选择 Slim 替代 ngrok?
很多新手做前端或 API 开发时,都会遇到这些痛点:
- 浏览器地址栏里写着
http://127.0.0.1:3000,复制给别人根本打不开; - 想上 HTTPS(调试 cookie、摄像头、地理定位等),得自己折腾证书;
- 想用 ngrok 做内网穿透,却要注册、配置 token,免费版域名每次还都不一样。
Slim 用本地代理 + 自建根证书的方式,把上面三件事都变成了一条命令的事:
| 对比项 | 传统方式 | ngrok | Slim |
|---|---|---|---|
| 本地 HTTPS 域名 | 手动装证书 | 需要客户端 | slim start一条命令 |
| 公网分享 URL | 端口映射 | 需账号 token | slim share一条命令 |
| 初始化成本 | 多 | 多 | 首次运行自动完成 |
它的核心思路很简单:在本地起一个轻量守护进程做反向代理,自动签发并信任证书,把myapp.test这样的域名指向 127.0.0.1。首次运行时,Slim 会自动完成三件"脏活"(源码见 internal/setup/setup.go):
- 生成本地根 CA;
- 将 CA 加入系统信任(可能提示输入一次系统密码);
- 配置端口转发,把 80/443 端口转发到代理端口(80→10080,443→10443)。
之后每次使用都是秒级响应,不再有弹窗和配置。
一键安装步骤
方式一:安装脚本(推荐新手)
在终端执行官方安装脚本,自动检测系统架构并下载对应版本:
curl -sL https://slim.sh/install.sh | sh脚本会自动识别 macOS / Linux 与 amd64 / arm64 架构,下载最新版并校验完整性,完整逻辑可参考 install.sh。
方式二:源码构建
本地已有 Go 1.25+ 环境的话,可以克隆仓库自己构建:
git clone https://gitcode.com/gh_mirrors/slim30/slim cd slim make build make install项目入口见 main.go,最终产物就是一个零运行时依赖的单一二进制文件。
30秒上手:slim start 命令生成 HTTPS 域名
安装完成后,进入项目目录执行:
slim start myapp --port 3000完成!现在浏览器访问https://myapp.test,就等同于访问localhost:3000,而且证书合法,地址栏直接显示🔒安全锁。
命令的核心逻辑位于 cmd/start.go,它会自动写入/etc/hosts映射、为域名签发证书、确保守护进程与端口转发就位,最后打印出所有可用地址。
💡小贴士:不确定后端是否已启动时,加上
--wait参数,命令会等待上游端口就绪后才返回,避免"域名通了但服务没起"的尴尬。
进阶玩法:任意后缀域名与路径路由
想用别的后缀?直接写完整域名
不指定后缀时默认使用.test;想更个性化,直接写完整域名即可:
slim start app.loc --port 3000 # https://app.loc → localhost:3000 slim start my.demo --port 4000 # https://my.demo → localhost:4000⚠️ 注意避免.local后缀,它被 mDNS 保留使用,会导致 macOS/Linux 上 DNS 解析变慢。
一个域名,多个后端服务
前端、后端、WebSocket 各占一个端口?用--route把不同路径分流到不同端口:
slim start myapp --port 3000 --route /api=8080 --route /ws=9000这样https://myapp.test/api转发到 8080,/ws转发到 9000,主路径仍走 3000——等于在浏览器里拥有一个"多合一"的正规域名。
团队协作:.slim.yaml 一键拉起整个项目
多人协作时,把项目里的所有服务写进项目根目录的.slim.yaml,队友拿到代码后一条命令全部启动:
services: - domain: myapp port: 3000 routes: - path: /api port: 8080 - domain: dashboard port: 5173 log_mode: minimal cors: trueslim up # 启动配置中的全部服务 slim down # 全部停止cmd/up.go 会自动在当前目录及父目录中查找.slim.yaml,为每个服务生成域名与证书,并统一注册到守护进程。
公网分享:slim share 秒变可访问的在线地址
需要给同事演示,或者用真机调试 H5?slim share通过隧道把本地端口暴露到公网,得到一个https://xxx.slim.show地址:
slim login # 首次使用需登录一次 slim share --port 3000 # 生成随机子域名的公网 URL常用参数一览(实现见 cmd/share.go):
| 参数 | 作用 |
|---|---|
--subdomain demo | 指定固定子域名 demo.slim.show |
--password secret | 给隧道加密码保护 |
--ttl 30m | 限时隧道,30 分钟自动过期 |
--domain myapp.example.com | 绑定你自己的域名 |
命令会实时打印每个请求的方法、路径、状态码和耗时,按Ctrl+C即可断开隧道。
日常运维命令速查表
| 命令 | 用途 |
|---|---|
slim list | 查看当前所有域名与代理状态(支持--json) |
slim logs --follow myapp | 实时跟踪某个域名的访问日志 |
slim stop myapp | 停止单个域名(不带参数则全部停止) |
slim doctor | 一键体检:证书、CA 信任、端口转发、hosts 全查一遍 |
slim update | 升级到最新版本 |
slim uninstall | 彻底卸载:CA、证书、hosts 条目、转发规则一网打尽 |
其中slim doctor的输出非常直观,形如:
✓ CA certificate valid, expires 2035-02-28 ✓ CA trust trusted by OS ✓ Port forwarding active (80→10080, 443→10443) ✓ Hosts: myapp.test present in /etc/hosts诊断逻辑位于 cmd/doctor.go,遇到"域名打不开"时先跑一遍,基本都能快速定位问题。
写在最后
Slim 用"一条命令"的极致体验证明:本地开发上正规 HTTPS 域名,不需要注册第三方服务、不需要手写证书。日常开发用slim start,演示分享用slim share,团队项目用.slim.yaml——从此告别127.0.0.1的时代。
【免费下载链接】slimGive your localhost a local or public URL项目地址: https://gitcode.com/gh_mirrors/slim30/slim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考