工作中使用最多的穿透工具 Frp , 解决了很多问题,使用起来也很简单,这次就来记录一下如何将 frp 和 nginx 搭配起来使用

# 安装 Frp

Frp Github 官方文档

找到 Releases 下载最新版,这里是 v0.54.0 , 需要根据系统版本下载对应版本

下载之后解压到 frp 目录下,主要有以下几个文件, frpc 是客户端, frps 是服务端, frpc.toml 是客户端配置文件, frps.toml 是服务端配置文件

h
[root@VM-12-5-opencloudos frp]# ls
frpc  frpc.toml  frps  frps.toml  LICENSE

# 配置 Frp 服务端

配置 frp 服务端很简单,编辑 frps.toml , 如果只是简单的使用,输入以下 3 行即可

h
bindPort = 7000
vhostHTTPPort = 7070
auth.token = "这里输入你的密码"

bindPort 指监听的端口,默认是 7000, 也可以自己改成任意端口
vhostHTTPPort 指 http 代理的端口,这里我设置为 7070
auth.token 是客户端链接的 token, 可以理解为密码,客户端也要设置

# 配置 Nginx

这里我写了一个 Nginx 的配置文件,可以很方便地将请求代理到 Frp 服务

h
server {
        listen 80;
        server_name  *.域名.com;
        client_max_body_size    20m;
        location / {
            proxy_pass http://127.0.0.1:7070;
            proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_connect_timeout 10m;
            proxy_send_timeout 10m;
            proxy_read_timeout 10m;
        }
        if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot"){
            return 403;
        }
    }

# 配置 Frp 客户端

客户端配置比服务端稍复杂一点,如果只是简单使用也非常简单

默认配置如下:

h
serverAddr = "127.0.0.1"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

这里需要把 serverAddr 改成服务端的 ip, serverPort 改成服务端的监听端口,另外再加一个 auth.token , 需要和服务端的一样

以下是我的配置

h
serverAddr = "124.xxx.xxx.xxx"
serverPort = 7000
auth.token = "xxxxxxxxx"
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 8002
customDomains = ["web.dev.域名.cn"]

将本地 8002 端口代理到服务端的 7070 端口,并且经过 Nginx 的反向代理,访问域名,即访问的本机的 8002 端口.

# 启动 Frp 服务端

一条命令即可启动服务端

h
./frps -c ./frps.toml

这里直接使用 systemd 来管理,并设置开机启动

h
# /etc/systemd/system/frps.service
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /root/frp/frps -c /root/frp/frps.toml
[Install]
WantedBy = multi-user.target
h
systemctl start frps
systemctl enable frps

# 结束

以上就是使用 Frp+Nginx 来内网穿透的配置。让开发变得更简单!

请我喝杯[咖啡]~( ̄▽ ̄)~*

一个放羊娃 微信支付

微信支付

一个放羊娃 支付宝

支付宝