选择镜像
在 docker hub 上搜索 frp ,没有官方镜像,目前下载量最高的是 snowdreamtech/frpc
这个,所以选用这个,查了一下没有现成的 docker-compose.yml
参考。
写配置文件
-
- 没有默认参数参考
- 从 .ini 文件改成了 .toml 文件。
- frps.toml 参数举例项目
-
文件结构
- 公网服务器
- frps
- frps.toml
- docker-compose.yml
- nginx
- docker-compose.yml
- conf.d
- service_1.my_domain.conf
- tmp.my_domain.conf
- frps
- 内网服务
- frpc
- frpc.toml
- docker-compose.yml
- frpc
- 公网服务器
# 公网服务器
mkdir frps
touch frps/frps.toml
touch frps/docker-compose.yml
mkdir nginx
mkdir nginx/conf.d
touch nginx/conf.d/service_1.my_domain.conf
touch nginx/conf.d/tmp.my_domain.conf # 测试用 Nginx 配置
# 内网服务器
mkdir frpc
touch frpc/frpc.toml
touch frpc/docker-compose.yml
frps.toml
- Server 端配置文件
- 有公网 ip 或者域名指向
- 用户访问 ip 所在的服务器
# vim frps/frps.toml
bindPort = 7000 #{必选} 客户端与该端口建立连接
log.to = "console" #{可选} 日志配置, 通过打印的方式输出日志
vhostHTTPPort = 7100 #{可选} http 代理需要,当访问该端口时跳到对应本地 frpc 代理
vhostHTTPSPort = 7200 #{可选} https 代理需要,当访问该端口时跳到对应本地 frpc 代理
transport.tcpMux = true #tcp 流多路复用(优化传输,需一致)
#身份验证
auth.method = "token" #{可选}身份验证方式
auth.token = "password" #token 设置密码,用于通过身份验证创建连接
#frp 服务仪表板配置
webServer.port = 7500 #{也可自行修改端口}
webServer.addr = "0.0.0.0" #公网 ip 或者域名
webServer.user = "admin" #登录用户名{可自行修改}
webServer.password = "admin" #登录密码{可自行修改}
frpc.toml
# vim frpc/frpc.toml
serverAddr = "服务器 IP 或域名"
serverPort = 7000
log.to = "console"
auth.token = "密钥"
#frpc 服务仪表板配置 可以不要
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
[[proxies]]
name = "rdp"
type = "tcp"
localIP = "10.128.39.41"
localPort = 3389
remotePort = 3389
报错
访问 Nginx 域名间接性无响应
- 写了个简单的配置测试,测试后依然没有返回结果,无日志。
# vim tmp.my_domain.conf
server {
listen 80;
listen 443 ssl;
server_name tmp.my_domain.com; #请求域名
include /etc/nginx/conf.d/base.conf;
location / {
default_type application/json;
return 200 '{"status":"success","result":"nginx json"}';
}
}
- 本地机器上
curl tmp.my_domain.com
依然无结果。 - 感觉是官方 nginx 被反复硬重启,导致的无响应。
sudo docker compose stop && sudo docker compose rm -f && sudo docker compose up -d
- 重启后
curl tmp.my_domain.com
反应正常。
my_domain.com 端口可以访问 二级域名映射后走 Nginx 不能访问
*1 connect() failed (111: Connection refused) while connecting to upstream, client: 223.73.6.219, server: ttrss.my_domain.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:10181/", host: "ttrss.my_domain.com"
- docker 多个 compose 网络访问