文档章节

nginx + frp 搭建内网穿透

l
 lineasy
发布于 2019/12/13 22:56
字数 1419
阅读 54
收藏 0

上一个项目是开发微信公众号,由于微信的各种烦人操作,只能到处找内网映射工具  ngrok也用过,花生壳也用过  都不怎么稳定,无意间听说了frp,本着一颗折腾的心搭建了一下,结果发现很不错,就一直到项目结束,发现还是很好用的,不过当时搭建的只能一个人用,(搭建ngrok又很麻烦 试了几次都有问题 !!很无奈),这会趁着用不到,尝试搭了下可以多人使用的!记录如下

所需工具

1. 云服务器  我用的阿里云CentOs7.7

2. 域名(已备案的那种)

3. nginx 1.16.1

4. frp 0.30

参考资料:https://juejin.im/post/5c49313f6fb9a049eb3c488f

https://www.wlphp.com/?post=166

                    https://blog.csdn.net/MaxWoods/article/details/89501907

开始操作:

1. 先安装nginx  我用的yum安装,主要是我感觉这个方便

yum install -y nginx  等待完成

2. 启动Nginx并设置开机启动

systemctl start nginx

systemctl enable nginx

3. 验证Nginx是否启动

ps -ef | grep -v grep | grep nginx
        root      2195     1  0 20:25 ?        00:00:00 nginx: master process /usr/sbin/nginx
        nginx     2196  2195  0 20:25 ?        00:00:00 nginx: worker process

4.  查看Nginx配置文件 (记住这个位置,后面要修改配置文件)

vi /etc/nginx/nginx.conf

5. 对于yum安装的Nginx来说,要想使配置文件的修改生效,需要重启Nginx,运行以下命令:

systemctl restart nginx

6.  网页验证Nginx是否成功运行。我的是这样,代表安装成功

nginx操作到此先暂停,安装frp:

7. 先在阿里云生成2条二级域名解析,分别为 frp.domain.com,  *.frp.domain.com为例,指向当前阿里云服务器公网ip,具体操作自行百度

8. 连接服务器,我用的putty,这个自己去补习吧,连接上服务器以后,下载frp,我下载的目前最新版本0.30.0 有需要自己更换版本,版本在这里找

https://github.com/fatedier/frp/releases   下载 linux_amd64.tar.gz版本的 ,然后进入服务器登录操作

我在根目录下建了个myproject文件夹 ,你得知道自己东西放在哪了 ,回头找配置文件好找,

cd /     进入根目录

mkdir  myproject  创建文件夹

wget  https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

下载后解压文件,然后当前路径会生成同名文件夹 ,计入文件夹

tar -xvf     frp_0.30.0_linux_amd64.tar.gz        解压:

cd frp………… 不建议手打  使用tab建补全

看到以下几个文件

只需要修改 frps.ini文件,

vi frps.ini 打开配置文件,按i进入编辑模式,使用方向键移动,最终结果如下

保存步骤  先按ESC 然后按  :wq   回车键保存退出

如果你的防火墙开启了 给7000/7071端口放行 ,服务器后台安全组也需要给这两个端口放行,没开的话这一步可以忽略

# 开启防火墙端口 7000端口和7071端口即为上面配置的bind_port和vhost_http_port端口

firewall-cmd --zone=public --add-port=7000/tcp --permanent

firewall-cmd --zone=public --add-port=7071/tcp --permanent

# 开启后重启防火墙,使得刚刚的修改生效

firewall-cmd --reload

设置frp开机自启,

vim /lib/systemd/system/frps.service

在frps.service里写入以下内容

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
#ExecStart=你的frp完整路径/frps -c 你的frps.ini完整路径
ExecStart=/test/frp_0.20.0_linux_amd64/frps -c /test/frp_0.20.0_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

然后就启动frps
systemctl start frps
再打开自启动
systemctl enable frps

修改nginx的配置文件

vi /etc/nginx/nginx.conf  替换里面的server模块为以下内容,注意修改路径

# frp的接收http请求的反向代理
    server {
        listen 80;
        server_name *.frp.domain.club  frp.domain.club;

        location / {
                # 7071端口即为frp监听的http端口
                proxy_pass http://127.0.0.1:7071;
                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 7d;
                proxy_send_timeout 7d;
                proxy_read_timeout 7d;

        }
        # 防止爬虫抓取
        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;
        }
     }

reboot重启服务器,我工作电脑是window  下载windows 客户端,我的是64位系统

https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_windows_amd64.zip

下载完后解压,使用记事本编辑frpc.ini 如下

[common]
# 部署frp服务端的公网服务器的ip
server_addr = 你的公网ip地址
# 和服务端的bind_port保持一致
server_port = 7000
#token
token = xxxxx


# 代理服务一 ,[]内的代理服务名称在全局范围内确保唯一,每个人的每个代理服务不能重名,
# 否则会影响正常使用。
 [http-a]
type = http
# local_port代表你想要暴露给外网的本地web服务端口
local_port = 8080
# subdomain 在全局范围内要确保唯一,每个代理服务的subdomain不能重名,否则会影响正常使用。
# 客户端的subdomain需和服务端的subdomain_host配合使用,保证唯一
subdomain = frp


# 代理服务二  ,各项配置说明请参考配置组一
[http-b]
type = http
local_port = 8686
subdomain = b

在你的解压路径创建一个start.bat文件,用记事本打开 复制下面内容进入

@echo off

frpc -c ./frpc.ini

pause

双击start.bat出现下图为成功

使用http://frp.frp.domain.com替换您的localhost试试效果

有问题留言

© 著作权归作者所有

l
粉丝 1
博文 2
码字总数 1653
作品 0
郑州
私信 提问
FRP内网穿透技术实战 - 知乎

一、前提 1. 需求 (1) 本地测试 通常情况下,我们在开发前端项目(手机网页版)时,想实时在模拟器、安卓真机、苹果真机等多个设备上看到实时页面效果,此时如果设备和本地开发用的电脑不在同一个...

IT干货
2019/11/03
0
0
常用集中内网穿透&端口映射软件工具

版权声明:本文为EnweiTech原创文章,未经博主允许不得转载。 https://blog.csdn.net/English0523/article/details/85006287 大家都用什么内网穿透?ngrok还是frp?自己搭建的还是国内免费的...

天府云创
2018/12/14
0
0
【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制

背景 order.png 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块。买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些。满心欢喜的下单之后,却发现 ht...

ios122
2017/11/21
0
0
使用Node实现简单的内网穿透

前言 最近在维护一款内网穿透的工具,我发现市面上的内网穿透工具很多,包括 Ngrok 、Localtunnel 、FRP ,他们的实现原理都差不多。我一开始认为内网穿透可以通过 Nginx 实现,但是通过对一...

特首
2019/12/10
0
0
frp v0.8.1 版本发布,内网穿透利器

内网穿透工具 frp 发布 0.8.1 版本,修复若干 bug: 修复 某些情况下 dashboard 状态显示不更新。 修复 authtoken 大于等于16字节会导致服务器端 panic 的异常。 修复无法正常删除旧日志文件...

FateDier
2016/08/23
6.9K
20

没有更多内容

加载失败,请刷新页面

加载更多

Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
82
0
处理CSV文件中的逗号

我正在寻找有关如何处理正在创建的csv文件的建议,然后由我们的客户上传,并且该值可能带有逗号(例如公司名称)。 我们正在研究的一些想法是:带引号的标识符(值“,”值“,”等)或使用|...

javail
昨天
79
0
如何克隆一个Date对象?

将Date变量分配给另一个变量会将引用复制到同一实例。 这意味着更改一个将更改另一个。 如何实际克隆或复制Date实例? #1楼 简化版: Date.prototype.clone = function () { return new ...

技术盛宴
昨天
73
0
计算一个数的数位之和

计算一个数的数位之和 例如:128 :1+2+8 = 11 public int numSum(int num) { int sum = 0; do { sum += num % 10; } while ((num = num / 10) > 0); return sum;......

SongAlone
昨天
124
0
为什么图片反复压缩后普遍会变绿,而不是其他颜色?

作者:Lion Yang 链接:https://www.zhihu.com/question/29355920/answer/119088684 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 业余版概要:安卓的...

shzwork
昨天
71
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部