frp内网穿透,你要问我有什么用,好像还真没有。

准备工作

下载地址:https://github.com/fatedier/frp

此处选用0.35.1版本

部署服务端

tar -zxvf frp_0.35.1_linux_amd64.tar.gz
cd frp_0.35.1_linux_amd64
vim frps.ini

编写frps.ini配置文件:

[common]
# 提供给客户端访问的监听端口
bind_port = 7000
# http类型的内网穿透必须设置vhost_http_port,并且所有的http类型的客户端都将通过同一个vhost_http_port访问
vhost_http_port = 10492
# 使用token的验证方式
authentication_method = token
# token密码
token = xxxxxxxxxxxx
# 查看服务器端连接情况的管理面板端口
dashboard_port = 7500
# 管理面板账号密码,默认admin
dashboard_user = admin
dashboard_pwd = admin

新建screen虚拟终端,启动frp服务端

screen -S frp
./frps -c ./frps.ini

Nginx代理

通过Nginx可以把vhost_http_port的端口反向代理到二级域名的80端口

cd /etc/nginx/conf.d
vim frp.conf

编写frp.conf配置文件

server {
    listen       80;
    listen       [::]:80;
    server_name  react.frp.solitaryorz.com;

    location / {
        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_pass http://localhost:10492;
    }
}

客户端

编辑frpc.ini文件

这里提供两种个人需要的用法:

  • Minecraft开启局域网,使用内网穿透,别人可以通过访问服务器进入你的世界,mstsc可用此种方式
  • React项目,把内容映射到公网域名上
[common]
server_addr = ip地址
# 与服务端的bind_port一致
server_port = 7000
token = xxxxxxxxxxxx

[mcc]
# 穿透类型
type = tcp
local_ip = 127.0.0.1
# 被穿透的服务的端口
local_port = 23456
# 公网访问端口
remote_port = 25565

[react]
# 穿透类型
type = http
# 被穿透的服务的端口
local_port = 3000
# 访问的公网域名
custom_domains = react.frp.solitaryorz.com

新建文本文档,编写内容,改名为start.bat,运行

.\frpc.exe -c .\frpc.ini

Q.E.D.


我还有很多想要完成的梦想。