FRP内网穿透工具

Wesley13
• 阅读 606

1、什么是FRP

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。主要他是一个开源的。

https://github.com/fatedier/frp http://getfrp.yzxx-soft.com/index.html

具体配置以及使用方法我这里就不过多介绍了,官方文档有详细说明。

本篇文章目标: 1、自定义二级域名做本地端口映射 2、要求支持80端来做微信开发调试 3、能查看端口的连接状态

这里我贴出我的配置内容如下:

2、服务端端配置 frps.ini

假如服务端的IP地址为:121.35.99.12

[common]
bind_port = 7000 
vhost_http_port = 9988 #由于80端口已暂用这里我们使用Nginx做端口映射到80端口来做微信开发的调试,如何映射后文会介绍
#连接池
max_pool_count = 5
#token验证
privilege_token = javen
#自定义二级域名
subdomain_host = javen.abc.com
#控制面板
dashboard_port = 9999
dashboard_user = javen
dashboard_pwd = javen
#日志
log_file = ./frps.log
log_level = info
log_max_days = 3

3、客户端配置 frpc.ini

[common]
server_addr = 121.35.99.12 # 服务器IP
server_port = 7000 # 服务器bind_port
privilege_token = javen

[web]
type = http
local_port = 8080 # 映射到本地的8080端口
subdomain = mac

# 如果不使用SSH可以将其注释掉
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

4、自定义二级域名

在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。

通过在 frps 的配置文件中配置 subdomain_host,就可以启用该特性。之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains,而是配置一个 subdomain 参数。

只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。

** 假如域名为:abc.com 去域名的控制面板添加解析 *.javen 到 121.35.99.12 **

5、客户端访问

http://mac.javen.abc.com:9988/user 映射到本地的 http://localhost:8080/user

6、Dashboard

通过浏览器查看 frp 的状态以及代理统计信息展示。

http://121.35.99.12:9999 登录的用户名以及密码为服务端配置的 dashboard_user = javen dashboard_pwd = javen

FRP内网穿透工具

7、端口映射

这里我们使用Nginx将9988端口映射到80端口供微信开发调试使用

#user  nobody;
worker_processes  2;
worker_cpu_affinity 01 10;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    upstream wx {
       ip_hash;
       server localhost:8080 weight=1 max_fails=3 fail_timeout=60s;
           server localhost:8088 weight=1 max_fails=3 fail_timeout=60s;
    }
    
    server {
        listen       80;
        server_name  localhost;
        access_log  /home/nginxlog/wx_access.log;

        location / {
            proxy_redirect          off;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $remote_addr;
            client_max_body_size      20m;
            client_body_buffer_size 128k;
            proxy_connect_timeout   600;
            proxy_send_timeout      600;
            proxy_read_timeout      900;
            proxy_buffer_size       4k;
            proxy_buffers           4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            proxy_pass http://wx;
        }

    }

        server {
                listen       80;
                server_name  *.javen.abc.com;
                access_log  /home/nginxlog/frp_access.log;

                location / {
                        proxy_redirect          off;
                        proxy_set_header Host $host:$server_port;
                        proxy_set_header X-Forwarded-For $remote_addr;
                        client_max_body_size      20m;
                        client_body_buffer_size 128k;
                        proxy_connect_timeout   600;
                        proxy_send_timeout      600;
                        proxy_read_timeout      900;
                        proxy_buffer_size       4k;
                        proxy_buffers           4 32k;
                        proxy_busy_buffers_size 64k;
                        proxy_temp_file_write_size 64k;
                        proxy_pass http://127.0.0.1:9988/;
                }

        }
    
    server {
        listen       8888;
        server_name  localhost;
        access_log   /home/nginxlog/static_access.log;

        location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk)$
        {
            root /home/ftp/private; 
            expires 7d; 
        }
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

推荐阅读 nginx下载安装 nginx启动、重启、关闭  nginx 配置详解 nginx 配置优化详解 nginx 负载均衡配置 nginx安装第三方模块的方法 nginx+tomcat动静态资源分离

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
GoCoding GoCoding
2年前
FRP 内网穿透、反向代理
是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。本文将以暴露内网Web服务为例,实践frp的安装部署。更多应用场景,可见。安装frp主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网IP
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这