Ngrok内网穿透快速部署你的Python或者Java等Web项目
本文介绍了使用ngrok工具实现内网穿透的简单方法,帮助开发者临时分享本地Web项目。ngrok通过建立安全隧道,将公网请求转发到本地HTTP服务,无需公网IP或服务器即可快速生成可访问的URL。文章详细讲解了从注册ngrok账号、获取Authtoken到配置Django项目的完整步骤,包括修改ALLOWED_HOSTS等重要设置。同时指出ngrok免费版的随机域名、带宽限制等缺点,并推荐了nat
用ngrok快速实现内网穿透:临时分享你的Web项目
引言
事情是这样的,今年我写完一份 PythonWeb(Django)的 项目,然后想和朋友分享一下。常规办法就是用 ToDesk 或者向日葵远程桌面展示,但这有一个壁垒:必须我们两个人同时在线,而且每次都准备电脑,非常不便。如果想把项目展示给更多人,就更难实现了。最直接的办法当然是上线、买域名、部署到服务器,但这一套流程下来,又要配置模块,又要购买服务器,既费钱又耗时——有时候我们只是想做一次简单的临时展示,完全没必要这么折腾。其实,内网穿透技术正好满足这种临时、快速分享的需求。今天这篇博客就简单介绍其中一种非常好用的内网穿透工具——ngrok,并教你如何用它一键把你的 Django 项目分享给任何人。
什么是内网穿透?
内网穿透(NAT穿透)是一种技术,它可以让外网设备访问你内网(局域网)中的服务。通常,我们本地的开发服务器只能在局域网内访问,但借助内网穿透工具,可以生成一个公网域名,所有发往该域名的请求都会被转发到你本地的指定端口,从而实现外网访问本地项目的效果。
ngrok 是什么?
ngrok 是一款流行的内网穿透工具,它通过安全的隧道将公网请求转发到你本地的 HTTP/HTTPS 服务。你只需要在本地运行 ngrok 客户端,它就会与 ngrok 的服务器建立连接,并分配一个公网 URL(如 https://xxxx.ngrok.io)。之后,任何人访问这个 URL 就能直接看到你本地运行的项目。
ngrok 的优点
- 无需公网 IP,无需服务器:本地开发机即可直接暴露给外网。
- 极速启动:下载客户端,一行命令,一分钟内就能拿到公网地址。
- 自动 HTTPS:ngrok 默认提供 HTTPS 访问,安全又省心。
- 调试友好:ngrok 的 Web 界面(http://127.0.0.1:4040)会记录所有请求的详情,方便调试。
- 支持 TCP 隧道:不限于 HTTP,还可以暴露 SSH、数据库等服务(付费功能)。
ngrok 的缺点
- 免费版域名随机:每次重启 ngrok 都会生成新的随机子域名,需要重新分享 URL(付费后可固定子域名)。
- 带宽与连接数限制:免费版有流量和并发连接的限制,不过对于小型演示已经足够。
- 数据经过 ngrok 服务器:所有流量都会经过 ngrok 的服务器,如果项目涉及敏感数据,需注意隐私风险。
- 国内访问可能不稳定:ngrok 的国际服务器有时会被干扰,国内用户可考虑国内替代品(如 natapp、花生壳等)。
如何使用 ngrok 分享你的 Django 项目
下面,我们以 Django 项目为例,一步步教你用 ngrok 实现临时公网访问。
第一步:注册 ngrok 账号并获取 Authtoken
第二步:下载并安装 ngrok 客户端
- 在官网下载对应你操作系统的 ngrok 客户端(Windows/macOS/Linux)。
- 解压下载的文件,得到一个可执行文件
ngrok(Windows 下是ngrok.exe)。建议将其放到系统 PATH 路径下,或者直接在命令行中切换到该目录运行。 - 在终端中执行以下命令,将你的 Authtoken 绑定到本地客户端(只需执行一次):
ngrok authtoken 你的Authtoken
Ps:其实这一步不执行也可以,无非后面你用到需要在终端cd 一下ngrok的位置打开即可!


第三步:启动 Django 开发服务器
确保你的 Django 项目已经可以在本地正常运行。在项目根目录下执行:
python manage.py runserver
默认情况下,Django 会在 http://127.0.0.1:8000 启动开发服务器。保持该终端窗口运行。这个我说一下8000是一般默认的端口,但比如你同时启动了多个Web的项目,而一个端口只能配置一个项目,这个时候你可能给你的项目分配8001或者8002等端口,甚至8003端口如下图:

第四步:用 ngrok 暴露本地端口
新开一个终端窗口,执行:
ngrok http 8003(将8003替换成你的实际端口)

你会看到类似下面的输出:
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Account 你的账户名 (Plan: Free)
Version 3.x.x
Region United States (us)
Latency 46ms
Web Interface http://127.0.0.1:4040
Forwarding https://xxxx-xx-xx-xx-xx.ngrok.io -> http://localhost:8000
其中 https://xxxx-xx-xx-xx-xx.ngrok.io 就是你的公网访问地址。
第五步:修改 Django 的 ALLOWED_HOSTS
因为 Django 默认只允许 localhost 和 127.0.0.1 访问,如果不修改,当外网请求进来时,Django 会抛出 DisallowedHost 错误。因此,需要编辑 Django 项目的 settings.py,将 ngrok 分配的域名添加到 ALLOWED_HOSTS 中:
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'xxxx-xx-xx-xx-xx.ngrok.io', # 替换成你实际的域名
]
注意:每次重启 ngrok 域名都可能变化,记得同步更新 ALLOWED_HOSTS。
第六步:分享给你的朋友
现在,把生成的 URL(例如 https://xxxx-xx-xx-xx-xx.ngrok.io)发给朋友,他们就能在公网上访问你的本地 Django 项目了!所有请求都会实时转发到你的开发服务器。
额外小技巧
- 查看请求详情:打开
http://127.0.0.1:4040,可以看到 ngrok 记录的每一个 HTTP 请求的详细信息,包括 Header、Body、响应时间等,非常便于调试。 - 自定义子域名(付费):如果你购买付费套餐,可以固定子域名,比如
ngrok http -subdomain=myproject 8000会得到https://myproject.ngrok.io。 - 同时暴露多个服务:可以开启多个 ngrok 进程,分别映射不同的本地端口。
注意事项
- 免费版限制:免费版 ngrok 每分钟最多处理 40 个连接,带宽约 1MB/s,适合轻量演示。另外,每次启动的随机域名会在 2 小时或重启后过期,需重新分享。
- Django 静态文件:如果你的项目涉及静态文件,且 DEBUG=False,需要确保静态文件正确收集或使用其他方式托管,否则可能无法加载样式。
- 安全提醒:不要把 ngrok URL 公开在不可信的地方,因为你的本地服务可能会被任意访问。最好在演示结束后及时关闭 ngrok。
其他内网穿透工具简介
除了 ngrok,市面上还有很多优秀的内网穿透工具,你可以根据自己的需求选择:
- natapp:国内服务,基于 ngrok 的二次开发,支持国内加速,有免费隧道(带宽和流量限制)。
- frp:开源项目,需要自建服务器,功能强大,适合有公网服务器的用户。
- localtunnel:轻量级工具,无需注册,使用简单(
npx localtunnel --port 8000)。
总结
ngrok 为开发者提供了一种极其便捷的临时分享方案,无需折腾服务器和域名,就能让朋友随时访问你的本地项目。对于快速演示、移动端调试、临时合作等场景非常实用。虽然免费版有一些限制,但对于大部分演示需求已经足够。如果你也遇到了需要临时分享项目的烦恼,不妨试试 ngrok,感受一下内网穿透的魔力!
如果你在使用过程中遇到困难 可以联系我解决!
参考链接:ngrok 官方文档
更多推荐



所有评论(0)