Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >frp+nginx实现内网穿透

frp+nginx实现内网穿透

作者头像
lestat
发布于 2018-04-17 09:05:39
发布于 2018-04-17 09:05:39
11.5K00
代码可运行
举报
文章被收录于专栏:lestat's bloglestat's blog
运行总次数:0
代码可运行

写在前面:上一篇文章写了关于ngrok+nginx实现内网穿透的流程,并提出了一些存在的问题,昨天试过frp之后,将之前ngrok存在的无法映射本地域名的问题解决了

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

先决条件

有一个域名,并解析到自己服务器上,如:*.frp.lestat.me

有一个具备固定ip的公网服务器

系统环境

假设环境为:

服务器OS:ubuntu17.10

客户端OS:macOS High Sierra

以下内容将按照上述环境进行搭建

部署

相对于ngrok还需要编译源码,frp方便很多,真正的开箱即用

服务器

下载对应操作系统的frp服务端&客户端至服务器和内网电脑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz

解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxf ./frp_0.16.1_linux_amd64.tar.gz
cd ./frp_0.16.1_linux_amd64
ll

目录结构如下(不同版本可能有差异,但大致相似):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-rw-rw-r--  1 kcptun kcptun   11358 Mar 21 10:11 LICENSE
-rwxrwxr-x  1 kcptun kcptun 6154432 Mar 21 10:10 frpc*
-rw-rw-r--  1 kcptun kcptun     126 Mar 21 10:11 frpc.ini
-rw-rw-r--  1 kcptun kcptun    5306 Mar 21 10:11 frpc_full.ini
-rwxrwxr-x  1 kcptun kcptun 7586848 Mar 21 10:10 frps*
-r--r-----  1 root   root     11207 Mar 25 15:38 frps.2018-03-25.log
-rw-rw-r--  1 kcptun kcptun    2127 Mar 25 13:42 frps.ini
-rw-rw----  1 root   root       723 Mar 26 05:06 frps.log
-rw-rw-r--  1 kcptun kcptun    2300 Mar 21 10:11 frps_full.ini
-rw-------  1 root   root         0 Mar 25 11:12 nohup.out

编辑配置文件

vim ./frps.ini

可参考如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 服务器端监听客户端连接请求的端口
bind_port = 7000

# 服务器端监听http请求的端口(由于80端口被nginx占用,因此指定其他端口)
vhost_http_port = 8080

# 服务器用以显示连接状态的站点端口,以下配置中可以通过访问IP:7500登录查看frp服务端状态等信息
dashboard_addr = 0.0.0.0
dashboard_port = 7500

# dashboard对应的用户名/密码
dashboard_user = use
dashboard_pwd = pwd

# 日志文件路径
log_file = ./frps.log

# 日志记录错误级别,分为:trace, debug, info, warn, erro
log_level = warn

# 日志保存最大天数
log_max_days = 3

# 客户端连接校验码(客户端需与之相同)
privilege_token = privilege_token

# heartbeat configure, it's not recommended to modify the default value
# the default value of heartbeat_timeout is 90
# heartbeat_timeout = 90

# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
# privilege_allow_ports = 2000-3000,3001,3003,4000-50000

# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 5

# max ports can be used for each client, default value is 0 means no limit
max_ports_per_client = 0

# authentication_timeout means the timeout interval (seconds) when the frpc connects frps
# if authentication_timeout is zero, the time is not verified, default is 900s
authentication_timeout = 900

# 支持外部访问的域名(需要将域名解析到IP)
subdomain_host = frps.lestat.me

配置nginx反向代理,将来自80端口并指向*.frp.lestat.me的请求分发至frp服务器http请求的监听端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen       80;
    server_name *.frps.lestat.me;

    location / {
        proxy_pass  http://127.0.0.1:8080;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_redirect off;
        proxy_read_timeout 240s;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

启动frp服务器并后台运行,启动完成后可通过lsof -i :7000查看端口占用情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup ./frps -c ./frps.ini &

客户端

  1. 创建目录并解压
  2. 编辑配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[common]
server_addr = 服务器IP
server_port = 7000
privilege_token = privilege_token
auth_token = auth_token
[hccrm]
type = http
local_port = 80
subdomain = hccrm

启动frp客户端程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./frpc -c ./frpc.ini

本地apache/nginx虚拟主机配置域名别名(alias),根据自己环境而定

mamp集成apache配置

流程图解

假设甲使用的浏览器希望访问乙所在内网环境服务器的web项目:

最后

尝试使用*.frps.lestat.me访问站点看是否正常,相比ngrok的流程,frp省去了编译,少踩不少坑,的确省事多了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FRP 内网穿透从 0 到 1 系列教程(二)
对于新手来说很多时候,明明跟着教程走,但是就是不行,很可能是防火墙问题。这里建议先关闭防火墙(相对不安全);可能需要在服务器购买的地方开放所有端口,然后在服务器上关闭防火墙。
用户2323866
2021/06/28
1.6K0
搭建frp内网穿透
frp脚本下载:https://github.com/fatedier/frp/releases/
R0A1NG
2022/02/19
1.9K0
搭建frp内网穿透
frp配置-内网穿透工具最佳实践
frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
zhangheng
2020/04/29
9.2K0
frp配置-内网穿透工具最佳实践
内网隧道之frp
frp 的程序代码为了糅合 frpc 和 frps 之间的请求,自己在TCP之上进行协议封装,因此大量使用了 channel, 所以代码被割散到各处,很不容易连贯起来
中龙技术
2022/09/29
7690
内网隧道之frp
内网渗透 | 内网穿透工具FRP的使用
FRP(Fast Reverse Proxy) 是一款简单,好用,稳定的隧道工具。FRP 使用 Go 语言开发,它是一款高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、KCP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。在进行内网渗透中,FRP是常用的一款隧道工具。
谢公子
2022/01/19
2.6K0
内网渗透 | 内网穿透工具FRP的使用
内网穿透工具 frp 使用教程
frp 适用于有公网IP需求的用户,如果有需要在互联网中找到自己的电脑,但是电脑又没有公网IPv4地址,又不想用IPv6地址,恰好还有一个空闲的拥有IPv4公网地址的云服务器,那么frp 是使用你需要的工具。
为为为什么
2022/08/06
6.4K0
内网穿透工具 frp 使用教程
FRP 搭建内网穿透
下载最新的 FRP :https://github.com/fatedier/frp/releases 几种常用架构如:
chuchur
2022/10/25
2K0
FRP 搭建内网穿透
frp实现外网访问群晖synology
    下载Linux(centos7)版本的frp_0.21.0,所有版本frp点这里
用户1086810
2018/09/27
7.3K0
Frp内网穿透
Frp是一个用于内网穿透的反向代理工具,可以方便的从外网访问内网中的主机。frp分为服务器端(frps)和客户端(frpc),想要实现内网穿透,除了需要frp工具,我们还需要一台VPS。接下里就演示一下内网穿透的效果。
Tommonkey
2023/02/27
2.3K0
Frp内网穿透
FRP内网穿透工具
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。主要他是一个开源的。
Javen
2018/08/21
3.8K2
FRP内网穿透工具
内网穿透之frp篇
之前咱写过一篇关于内网穿透的文章介绍了一下花生壳,传送门在此然后挖了个坑,说要研究一下frp,毕竟也是个大名鼎鼎的神器件,今天,忙完了手中的事,终于带着这篇文章来啦!
T1Am0
2022/09/13
5100
内网穿透之frp篇
frp搭建内网穿透
添加 jellyfin.superpig.win的A记录 并将jellyfin服务在本地运行起来。
超级大猪
2021/03/08
2K0
搭建属于自己的FRP内网穿透
内网穿透对于多我们程序员来讲,应该是不陌生的。在对接某些第三方平台的时候,比如说:微信支付,经常会涉及到回调,在开发的时候就需要使用内网穿透来进行本地调试。那么今天给大家分享一下用 frp 搭建属于自己的内网穿透,方便在我们日常的开发中进行调试。同时是 frp 是开源并且是免费的,只需要一台云服务器即可搭建。
不一样的科技宅
2020/09/18
9.2K1
搭建属于自己的FRP内网穿透
通过 docker 部署 frp 内网穿透(Linux and Windows)
FRP (Fast Reverse Proxy) 是一个用于内网穿透的高效反向代理应用,它支持 TCP、UDP、HTTP 和 HTTPS 等多种协议,能够让处于防火墙或 NAT 后的内网服务通过公网访问。通过 FRP,内网服务可以绑定到外网 IP 地址和端口,用户可以方便地通过公网访问这些内网服务,适用于远程管理、应用发布等场景。
冷影玺
2024/10/09
4.3K0
通过 docker 部署 frp 内网穿透(Linux and Windows)
frp 内网穿透含web和ssh(已验证)
用公司内网的服务器,或者公司的电脑搭建了一个web站点,却无法在外网访问web站点,或者在家想用ssh连接公司的内网服务器。frp就是如何利用内网穿透的方式实现以上功能。
用户10002156
2023/08/07
1.5K0
frp 内网穿透含web和ssh(已验证)
一分钟用HCaaS搭建Frp内网穿透
对于内网穿透大家并不陌生,不管你是小白还是开发者都需要一些内网穿透服务,如果自己购买服务器苦恼于带宽小(国内主机商普遍都是1M~10M),从而导致穿透效果并不是很理想,最近博主一直在关注网银互联公测的HCaaS,由于带宽比较高,如果搭建内网穿透在容器里,速度就很理想,本教程旨在最简单的方法利用HCaaS搭建一个内网穿透,如果你对Frp内网穿透不了解,可以移步我的早期一篇文章《内网穿墙利器frp,实现无公网IP穿透(支持windows+linux)》
Lcry
2022/11/29
5390
一分钟用HCaaS搭建Frp内网穿透
【frp】树莓派使用Frp内网穿透访问
下载服务端:https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_386.tar.gz 要选择喝服务器内核相符的版本
一朵灼灼华
2022/08/05
1.1K0
【frp】树莓派使用Frp内网穿透访问
Nginx+Frp+Docker实现HTTPS内网穿透
内网穿透实用性非常强, 例如支付回调/访问内网数据库 域名dns需要解析到服务器地址 frp下载地址 https://github.com/fatedier/frp/releases 下载这两个文件 frp_0.38.0_linux_amd64.tar.gz frp_0.38.0_windows_amd64.zip 服务端Nginx配置 server { listen 80; server_name qqqqqqqqq.test.com; rewrite ^(.*)$ http
code-x
2022/06/21
1.2K0
快速搭建frp的ssh和http的内网穿透
frp 是一个用Go语言开发的,可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 、 http 和 https。可将一个部署在本机的web服务映射到外网。
没有故事的陈师傅
2020/11/11
5.8K2
快速搭建frp的ssh和http的内网穿透
frp 进行内网穿透
简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。 截至本文完成,frp的最新版本为v0.22.0,本文使用最新版本。
用户10125653
2022/11/10
6590
frp 进行内网穿透
相关推荐
FRP 内网穿透从 0 到 1 系列教程(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档