frp 内网穿透

一、frp 的作用

  1. 利用处于内网或防火墙后的机器,对外网环境提供 HTTP 或 HTTPS 服务。
  2. 对于 HTTP, HTTPS 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
  3. 利用处于内网或防火墙后的机器,对外网环境提供 TCP 和 UDP 服务,例如在家里通过 SSH 访问处于公司内网环境内的主机。

二、准备工作

  1. 云服务器
  2. 配置域名指向服务器
  3. 服务器开放两个端口

三、配置 frp

更多版本 frp 下载地址

(1)linux 服务端
## linux 服务器安装 frp 
wget https://github.com/fatedier/frp/releases/download/v0.28.2/frp_0.28.2_linux_amd64.tar.gz
tar xzvf frp_.28.2_linux_amd64.tar.gz
mv frp_0.28.2_linux_amd64 frp28


## linux frp 服务端配置

vim frps.ini

[common]

## frp 监听的端口
bind_port = 7001
## frp 数据访问端口
vhost_http_port = 7000
## 主域名
subdomain_host= frp.tiger.com
## 身份验证
token = tigerExpensive

##启动 frp 服务
./frps -c frps.ini
(2)widows 客户端

下载 frp 客户端,解压 配置 frpc.ini

## frpc.ini
[common]
## frp 服务的 ip
server_addr = 110.180.18.12
## frp 服务监听的端口
server_port = 7001
token = tigerExpensive

[ssh]
type = http
local_port = 80
## 配置的子域名
subdomain = love

## cmd 命令行启动
frpc.exe -c frpc.ini

启动开发的项目

http://love.frp.tiger.com:7000 项目 可以直接访问到本地

三、 frp 进行 nginx 转发

​ 上面的访问都需要域名+端口在可以进行正常访问,唯有 80 端口可以不用,但是 80 端口常常被其他的软件使用比如:ngnix 。而现在我们也想要达到直接访问域名就可以访问到我内网本地,那么就要进行如下设置。

## nginx.conf

server{
    listen 80;
    server_name *.frp.tiger.com; # 这里设置子域名转发规则
    location / {
        #underscores_in_headers on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 这里是vhost_http_port
        proxy_pass http://localhost:7000; 
    }
}

#重新加载 nginx 
./nginx -s reload

备注:nginx对http header中包含下划线的header信息都会过滤掉

所以需要添加 underscores_in_headers on; 才能转发自定义的header信息

四、配置 frp 开机服务启动

​ centos7.0以上的版本,服务都是基于systemd的方式进行管理的。frp通过设置后也可以实现systemd的方式进行管理,这样我们就可以通过systemctl命令来进行服务的统一管理,同时通过这样的设置也可以将frp服务加入开机自启动。

将frp设置成linux系统的服务,基于systemd方式管理

##编写frp.service文件,以centos7为例:
vim /usr/lib/systemd/system/frps.service
#######
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
##此处更改为你对应安装的路径
ExecStart=/root/frp/frps -c /root/frp/frps.ini
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
########


####将frp设置成开机自启动
systemctl enable frps
systemctl restart frps
#####Frp到此就配置完了。

你可能感兴趣的:(frp 内网穿透)