美文网首页
frp 内网穿透

frp 内网穿透

作者: TigerFang | 来源:发表于2019-12-29 22:39 被阅读0次

    一、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 内网穿透

          本文链接:https://www.haomeiwen.com/subject/usvuoctx.html