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提供的免费内网穿透。
注意:本文归作者所有,未经作者允许,不得转载