Skip to content

什么是内网穿透?

简单来说就是让你的电脑通过frp服务器可以通过公网来访问

有什么用?

方便开发和调试微信小程序子类的项目

服务端

如果是部署在阿里云等云服务器上, 注意要开放安全组端口

yaml
version: '3'

services:
  frps:
    container_name: frps
    image: snowdreamtech/frps:0.53.0
    network_mode: host
    volumes:
      - ./frps.toml:/etc/frp/frps.toml
      - ./log/:/etc/frp/log/
toml
[common]
# 需要跟 frpc 保持一致
bind_port = 8800
kcp_bind_port = 8800
vhost_http_port = 8880
vhost_https_port = 8443
authentication_method = 'token'
token = 'your-token-string'

# frps 后台(可以查看当前在线的客户端)
dashboard_user = 'your-username'
dashboard_pwd = 'your-password'
dashboard_port = 8888

# frp 日志配置
log_file = '/etc/frp/log/frps.log'
log_level = 'info'
log_max_days = 3

客户端

yaml
version: '3'
services:
  frpc:
    container_name: frpc
    image: snowdreamtech/frpc:0.53.0
    network_mode: host
    volumes:
      - ./frpc.toml:/etc/frp/frpc.toml
toml
[common]
server_addr = "x.x.x.x"    # 服务器的地址
server_port = 8800         # 注意和服务端保持一致
authentication_method = "token"
token = "your-token-string" # 注意和服务端保持一致

[ssh]
# 直接通过 ssh 登录本地电脑
type = 'tcp'
local_ip = '127.0.0.1'
local_port = 22
remote_port = 8022

# 尽量将这些服务的端口设置为一致的, 如果不一致(如: local_port:8801 remote_port:8888)
# 那么在访问 http://frp.liaohui5.cn:8888 的时候就会自动访问本地的 8801
[demo1]
type = 'tcp'
custom_domains = 'frp.liaohui5.cn'
local_ip = '127.0.0.1'
local_port = 8801
remote_port = 8801

[demo2]
type = 'tcp'
custom_domains = 'frp.liaohui5.cn'
local_ip = '127.0.0.1'
local_port = 8802
remote_port = 8802

测试

启动两个服务并且监听对应端口

启动一个本地服务器的端口有很多, 如: http-server vite serve live-server

sh
# demo1
mkdir -p ./demos/demo1
echo "<h1>111111111</h1>" > ./demos/demo1/index.html
vite ./demos/demo1 --port 8801

# demo2
mkdir -p ./demos/demo2
echo "<h1>222222222</h1>" > ./demos/demo2/index.html
vite ./demos/demo2 --port 8802

通过url访问

注意, 不是通过 localhost 来访问, 而是通过配置文件中的 custom_domains 来访问

浏览器打开: http://frp.liaohui5.cn:8801
浏览器打开: http://frp.liaohui5.cn:8802

Released under the MIT License.