在ServBay中部署Pinggy反向代理服务指南
Pinggy 是一款简单易用的内网穿透工具,通过反向代理技术,可以将您的本地服务安全地暴露到公网上。本指南将详细介绍如何在 ServBay 环境中使用 Pinggy,快速实现本地 Web 服务的互联网访问。
技术原理
Pinggy 通过建立安全的 SSH 隧道,将部署在 NAT/防火墙后的本地服务映射到公网。在 ServBay 应用场景中,这使得开发者能够轻松地将本地调试的 Web 服务实时对外发布,方便团队协作、远程测试和演示。
环境准备
无需安装任何客户端!Pinggy 的最大优势之一是它不需要在本地计算机上安装任何软件。您只需要一个支持 SSH 的终端。
隧道配置实战
核心命令
使用 Pinggy 建立隧道非常简单。只需在终端中执行以下命令:
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
参数组件 | 功能说明 |
---|---|
-p 443 | 指定 SSH 连接到 Pinggy 服务器的端口为 443(HTTPS 默认端口)。 |
-R0:localhost:443 | 远程端口转发。0 表示让 Pinggy 服务器自动分配一个随机端口。localhost:443 表示将远程端口转发到本地的 443 端口(HTTPS)。 |
-o StrictHostKeyChecking=no | 禁用 SSH 主机密钥检查(在首次连接或测试时方便,但生产环境不推荐)。 |
-o ServerAliveInterval=30 | 每 30 秒发送一次 keep-alive 消息,保持 SSH 连接活跃。 |
-t [email protected] | Pinggy 用户名和服务器地址。 |
x:localServerTls:servbay.new | Pinggy 的自定义参数,指定本地服务器的 TLS 域名为 servbay.new 。 |
"u:host:servbay.new" | Pinggy 的自定义参数,将传入请求的 Host 头设置为 servbay.new 。 |
命令运行成功后,将会输出用于访问的 URL 地址
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
2
服务验证
- 通过
curl
验证 (推荐): 使用curl
命令来测试。
curl -I https://rnirh-172-188-50-148.a.free.pinggy.link
输出内容如下
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Cache-Control: max-age=0, must-revalidate, no-cache, no-store, private
Connection: keep-alive
Content-Type: text/html; charset=UTF-8
Date: Tue, 18 Feb 2025 11:51:48 GMT
Expires: Sun, 02 Jan 1990 00:00:00 GMT
Pragma: no-cache
Server: nginx
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/8.4.3
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
浏览器访问: 直接打开浏览器访问
https://rnirh-172-188-50-148.a.free.pinggy.link
预期结果:
- 呈现与本地 ServBay 服务一致的 Web 内容。
- 如果您的本地服务配置了 HTTPS,Pinggy 也会自动支持 HTTPS。
- 响应时间通常很快(取决于您的本地网络和到 Pinggy 服务器的连接)。
高级技巧
自定义域名: Pinggy Pro 用户可以使用自定义域名。详细信息请参考 Pinggy 文档。
TCP 隧道: 如果您的服务不是 HTTP/HTTPS,您可以使用 Pinggy 的 TCP 隧道功能:
bashssh -R <REMOTE_PORT>:localhost:<LOCAL_PORT> a.pinggy.io
1将
<REMOTE_PORT>
替换为您希望在 Pinggy 服务器上使用的端口。持久化隧道 (使用
autossh
): 如果你的网络不稳定,或者你想长时间开着隧道,推荐使用autossh
.autossh
会在ssh断开后自动重连.
故障排查
现象 | 解决方案 |
---|---|
连接超时 | 检查 ServBay 服务是否正在运行,以及 <LOCAL_PORT> 是否正确。 |
404 错误 (Not Found) | 如果使用虚拟主机,请确保按照“配置示例”中的说明使用了 curl 命令(带有正确的 Host 头)。 |
无法访问 Pinggy URL | 检查您的网络连接,确保可以访问 a.pinggy.io 。 |
间歇性断开 | 这可能是由于网络不稳定。尝试使用 autossh 来建立更稳定的连接(请参阅“高级技巧”部分)。 |
方案总结
通过 Pinggy,开发者可以在 ServBay 环境中极其简单快捷地建立安全的公网访问通道。该方案具有以下优势:
- 无需安装客户端: 简化了配置流程,减少了依赖。
- 一键式操作: 通过一条 SSH 命令即可启动隧道。
- 自动 HTTPS 支持: 无需手动配置 SSL 证书。
- 支持 HTTP 和 TCP 隧道: 满足各种类型的服务需求。
- Token-less命令: 可以直接分享网址, 无需担心token泄露.
Pinggy 提供了一种比 Ngrok 更为便捷的方式,尤其适合快速测试和临时共享本地服务。对于需要长期稳定运行或自定义域名的场景,可以考虑 Pinggy 的 Pro 版本。