以下是基于Nginx实现内网穿透的常用开源项目及其核心原理,供您参考:
1. frp (Fast Reverse Proxy)
项目地址: https://github.com/fatedier/frp
特点:
- 使用Go语言开发,轻量高效
- 支持TCP、UDP、HTTP、HTTPS等协议
- 通过服务端(公网服务器)与客户端(内网机器)协作实现穿透
- 可结合Nginx反向代理实现域名绑定和负载均衡
典型架构:
公网用户 → Nginx(443/80端口) → frps(服务端) → frpc(客户端) → 内网服务
2. ngrok
项目地址: https://github.com/inconshreveable/ngrok
特点:
- 早期流行的内网穿透工具,采用C/S架构
- 支持自定义域名和TLS加密
- Nginx可作为前置代理处理SSL终端或路由分发
3. OpenVPN + Nginx
方案说明:
- 使用OpenVPN建立虚拟专用网络,将内网服务暴露到VPN网络
- Nginx作为反向代理将公网请求转发到VPN内的服务
- 适合需要高安全性的场景
4. SSH隧道 + Nginx
简易方法:
# 在內網機器建立SSH反向隧道
ssh -R 8080:localhost:80 user@公网服务器IP
# 在公网服务器的Nginx配置反向代理
location / {
proxy_pass http://localhost:8080;
}
5. Nginx原生Stream模块
若需穿透TCP/UDP服务(如数据库、SSH):
# nginx.conf中配置stream模块
stream {
server {
listen 3306;
proxy_pass 内网机器IP:3306;
}
}
注:需Nginx安装--with-stream
模块。
🔍 选择建议
场景 | 推荐工具 | 优势 |
---|---|---|
HTTP/HTTPS服务 | frp + Nginx | 配置灵活,易于管理证书和域名 |
TCP/UDP服务 | frp或Nginx Stream | 协议支持全面 |
临时调试 | ngrok或SSH隧道 | 快速部署 |
建议优先考虑 frp,其文档完善且社区活跃,结合Nginx可满足多数生产环境需求。
内容由零声教学AI助手提供,问题来源于学员提问