反向代理与内网穿透
frp 是啥?
- frp (fast reverse proxy) 是一个专注于内网穿透的高性能反向代理应用。
- 它支持 TCP、UDP、HTTP、HTTPS 等多种协议。
- 它可以将内网服务安全地通过具有公网 IP 的节点中转并暴露到公网。
- frps 为服务端(部署在公网设备),frpc 为客户端(部署在内网设备)。
frp 服务端 (frps) 搭建
1. Docker 环境安装
使用 Docker 镜像 snowdreamtech/frps 进行快速部署。
docker-compose.yml 示例:
version: '3.3'
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.ini:/etc/frp/frps.ini'
container_name: frps
image: snowdreamtech/frps
2. 配置 frps.ini
在安装目录下创建并编辑 frps.ini:
[common]
bind_port = 7000
token = oneisall # 请根据需求设置复杂的密码
安装 Nginx Proxy Manager (NPM)
NPM 结合 frp 可以实现通过二级域名(不加端口号)访问本地服务。
docker-compose.yml 示例:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
默认登录信息:
- Email:
admin@example.com - Password:
changeme
进阶:域名不带端口访问本地服务
- 在内网 frpc.ini 中设置
remote_port(例如3300)。 - 将二级域名(如
one.oneisall.one)解析到服务器公网 IP。 - 在 NPM 中设置反向代理:将
https://one.oneisall.one转发至服务器公网IP:3300。 - 这样即可实现通过 HTTPS 域名直接访问内网服务。
🎉 至此,内网服务已成功暴露并关联域名!