frp 实现 http / tcp 内网穿透(穿透 wordpress )
- 1. 背景简介与软件安装
- 2. 服务端配置
- 2.1 配置文件
- 2.2 wordpress 配置文件
- 2.3 frps 自启动
- 3.客户端配置
- 3.1 配置文件
- 3.2 frpc 自启动
同步发布在个人笔记frp 实现 http / tcp 内网穿透(穿透 wordpress )
1. 背景简介与软件安装
前面有笔记记录了我们内网穿透的方案:
服务 | 内网端口 | 公网服务器 ip | 期望实现的公网端口 |
---|---|---|---|
http 网页应用 | 80 | domain.com | 8080 |
ftp 文件服务器 | 90 | domain.com | 9090 |
frp 工具实现的是内网服务器与公网服务器之间的通信,它由两部分组成,分别是服务端 frps和客户端 frpc,服务端 frps 布置在公网服务器上,客户端 frpc 布置在内网服务器上,信息流近似如下(对于我们的方案,nginx 也可以视为“用户”):
frp 安装推荐从 github 下载:frp_release。
要注意,不同版本的 frp 配置文件写法不同,老一些的版本使用的 ini 配置文件,新一些的版本使用的toml格式,推荐大家配置前阅读一下官方的文档frp文档。
下载下来后解压获得可运行的二进制文件frps和frpc,分别拷贝到公网服务器和内网服务器就算安装好了。具体的放置位置与配置文件编写,下面详细记录。
2. 服务端配置
2.1 配置文件
推荐安装位置在公网服务器/usr/local/etc/frp
,当然你也可以安装在自己喜欢的地方,下面把路径用server_path/
代替。把frps文件放在路径下,然后在路径下新建配置文件frps.toml
。
server_path/frps.toml
bindPort = 6666 # frps 用来与客户端通信的端口
vhostHTTPPort = 81 # 穿透的http服务的暴露端口
#vhostHTTPSPort = 444 # 如果是https协议用这个字段
auth.token = "your_token" # 用来认证的令牌,frps和frpc要保持一致
# Server Dashboard,可以查看frp服务状态以及统计信息的后台管理面板
webServer.addr = "0.0.0.0" # 后台管理地址,就是服务器ip地址
webServer.port = 7777 # 你可以自定义
webServer.user = "user" # 后台登录用户名
webServer.password = "your_password" # 后台登录密码
保存好后,可以通过命令运行:
./frps -c frps.toml
2.2 wordpress 配置文件
如果要穿透的是 wordpress 服务,只有一点必须要注意,那就是vhostHTTPPort必须与内网上的 wordpress 端口保持一致,否则就会穿透失败。
比如内网的 wordpress 服务在 192.168.1.2:6060
,那么vhostHTTPPort
就必须设置为6060
。
2.3 frps 自启动
把服务注册为系统服务,并实现开机自启动。
在/etc/systemd/system/
路径下新建文件frps.service
/etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=server_path/frps -c server_path/frps.toml
[Install]
WantedBy=multi-user.target
然后终端运行systemctl enable frps.service
就把服务注册为开机自启动了,后面就可以用systemctl
的方式管理了。
这时候浏览器访问公网服务器ip:7777
,输入设置的用户密码,就能进入 frps 的后台管理界面了。
3.客户端配置
3.1 配置文件
推荐安装位置在公网服务器/usr/local/etc/frp
,当然你也可以安装在自己喜欢的地方,下面把路径用client_path/
代替。把frpc文件放在路径下,然后在路径下新建配置文件frpc.toml
。
client_path/frpc.toml
serverAddr = "xx.xx.xx.xx" # 公网服务器ip
serverPort = 6666 # 公网服务器frps配置的通道端口
auth.token = "your_token" # 与frps配置的令牌相同
# http 穿透服务
[[proxies]]
name = "http-1" # 要为每个服务起一个专属的名字,不能重复
type = "http" # 选择穿透协议
localPort = 80 # 本地服务的端口
customDomains = ["domain.com"] # 注意此处是必填项,后面访问服务也必须使用这个域名,用ip等别的方式是不能访问服务的;如果此处填的是ip,则也只能通过ip来访问。
# ftp 穿透服务
[[proxies]]
name = "ftp-1"
type = "tcp" # 选择tcp协议
localPort = 90 #内网ftp端口
remotePort = 91 #frps的映射端口
保存好后,可以通过命令运行:
./frpc -c frpc.toml
此时内网穿透就已经配置好了,可以登录 frps 的后台查看服务情况。也可以和服务端一样,把客户端也注册为自启动服务。
3.2 frpc 自启动
把服务注册为系统服务,并实现开机自启动。
在/etc/systemd/system/
路径下新建文件frpc.service
/etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=client_path/frpc -c clientr_path/frpc.toml
[Install]
WantedBy=multi-user.target
然后终端运行systemctl enable frpc.service
就把服务注册为开机自启动了,后面就可以用systemctl
的方式管理了。