docker搭建frp内网穿透

Sam 25天前 ⋅ 150 阅读
frp内网穿透技术解决家里或办公室没有公网ip,没有80,443端口,无法绑定域名提供网站服务。
注意:自己搭建frp服务器,需要有域名和一台固定IP的云服务器,如果没有,可以使用文中提到的免费frp服务器,或者自行上网找免费的frp服务器,域名必须解析指向到frp服务器的IP地址。

指向国内frp服务器的域名必须备案,而域名备案必须有自己的云服务器,所以建议域名指向国外的frp服务器;或者购买低价虚拟服务器备案域名,再指向国内frp服务器。

下面用frp的版本是0.60.0,老版本可能不适用。

服务器端:

frps.toml

# frps.toml
bindPort = 7000                                 # 服务端与客户端通信端口
quicBindPort = 7000   #QUIC 绑定的是 UDP 端口,可以和 bindPort 一样
vhostHTTPPort = 8080
#vhostHTTPSPort = 8888

auth.token = "123321"                   # 身份验证令牌,frpc要与frps一致

# Server Dashboard,可以查看frp服务状态以及统计信息
webServer.addr = "0.0.0.0"              # 后台管理地址
webServer.port = 7500                   # 后台管理端口
webServer.user = "admin"                # 后台登录用户名
webServer.password = "123456"    # 后台登录密码

启动:docker run -d --network=app-network -p 7000:7000 -p 7500:7500 -p 8080:8080 -v /data/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps:0.60.0

客户端:

frpc.toml

# frpc.toml
serverAddr = "服务器ip"
serverPort = 7000 # 公网服务端通信端口

auth.token = "123321" # 令牌,与公网服务端保持一致

[[proxies]]
name = "http-frp"
type = "http"
localIp = "host.docker.internal" # DockerDNS
transport.useCompression = true
localPort = 2222 # 本地应用端口
customDomains = ["frp.onforyou.com"]

启动:docker run -d --network host -v D:\frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc:0.60.0

可以登录http://服务器IP:7500/ 查看链接状态,或者查看docker应用日志。

配置nginx

server {
  listen 80;
  listen [::]:80;
  server_name frp.onforyou.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen       443 ssl ;
  listen       [::]:443 ssl ;
  server_name  frp.onforyou.com;

  ssl_certificate /etc/SSL/certs/*.onforyou.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/SSL/certs/*.onforyou.com_ecc/*.onforyou.com.key;
  ssl_trusted_certificate  /etc/SSL/certs/*.onforyou.com_ecc/ca.cer;

  location / {
    proxy_pass http://frps:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

 

如果没有云服务器,可以用花生壳或者Cloudflare Tunnel提供的免费内网穿透。

 

全部评论: 0

    我有话说: