frp + Nginx实现内网穿透 配置多个子域名访问内部服务

那年烟雨落申城
• 阅读 400

缘起

公司搬家,新家不能装专线,静态ip消失,改为动态IP了,这样内部服务器在外网就没法访问了,所幸我们有一台云服务器,有公网ip。这里只提示写这篇博客的原因,下面的操作是在我个人腾讯云服务器(带公网ip)和个人PC上测试使用,亲测通过。公司阿里云服务器是生产环境,拿来测试会影响线上。

环境准备

  1. 已备案的域名一个
  2. 带公网ip的云服务器
  3. pc一个
  4. frp0.30.0 frp github下载地址
  5. nginx1.10.3

云服务器安装nginx和frp

  1. 安装 frp 这里简单说一下frp,frp是用go语言开发的内网穿透工具,分为frpc,frps。frpc是客户端,安装在内网,frps是服务端,安装在具有公网ip的服务器上,frpc和frps协商一个通讯端口,frpc启动的时候会通过这个通讯端口去连接frps,实现内网穿透(并没有去看源码,只是大致猜测是这样)。frps可以配置vhost_http_port来实现虚拟主机服务,浏览器请求 [公网ip]:[vhost_http_port],frps会把这个请求转发给frpc,frpc接收到后再转发给服务提供者,可以实现内网服务访问,具体请看:frp中文文档 从github上下载frp,放在/home下,打开frps.ini添加如下配置:
    [common]
    

frp连接的端口

bind_port = 7000

http监听端口

vhost_http_port = 8080

https监听端口

vhost_https_port = 8443

frp客户端连接服务端时的token 为了安全 建议添加

token = tPaALZKtCBfN6IAp

二级域名 后面访问的格式是a.frp.xxx.net或b.frp.xxx.net

subdomain_host = frp.xxx.net

使用命令启动:
```shell
./frps -c ./frps.ini

ps:如果云服务器有防火墙或者云安全组策略(阿里云有,在控制台),需要开放你上面用到的端口。

域名解析

解析两条A记录:frp.xxx.net*.frp.xxx.net,都指向你的云服务器ip,稍等一会,ping frp.xxx.net,如果能ping通说明解析成功

配置frpc

  1. 下载frp到本地,解压
  2. 进入解压完成的目录,修改frpc.ini为下:
    [common]
    # 公网ip 就是frps所在的服务器的ip
    server_addr = xxx.xxx.xxx.xxx
    # frps规定的连接端口
    server_port = 7000
    # 连接token 与frps中的token
    token = tPaALZKtCBfN6isP
    # 定义第一个转发
    [web01]
    type = http
    # 本地(内网)服务的端口
    local_port = 8001
    # 与frps中的subdomain_host连接起来就是a.frp.xxx.net
    subdomain = a
    

定义第二个转发

[web02] type = http

本地(内网)服务的端口

local_port = 8002

与frps中的subdomain_host连接起来就是b.frp.xxx.net

subdomain = b

然后启动:
```shell
./frpc -c ./frpc.ini

如果没有报错就是启动成功。 至此,访问地址a.frp.xxx.net:8080会被转发到本地(内网)的8001端口,而访问地址b.frp.xxx.net:8080会被转发到本地(内网)的8002端口

配置nginx

我们不想要url a.frp.xxx.net:8080这类似地址中的端口怎么办?那只能使用默认端口80了,这里可以用nginx进行转发,首先在云服务器安装nginx,这个不再赘述,网上有的是资料,然后配置nginx的conf文件,名字为nginx.conf,在nginx文件夹或者/etc/nginx里面,至于在哪,取决于你用的什么安装方式,此文件中添加一个server节点,配置如下:

server {
    # 监听的80端口
    listen 80;
    # 域名配置 记得一定要加上*.frp.xxx.net这个,只加frp.xxx.net是不行的,某运维大坑张XX在这坑我2天的时间
    server_name * .frp.xxx.net frp.xxx.net;
    location / {
        proxy_pass http: //127.0.0.1:8080;
        # 这个Host的header一定要加,不然转发后frp拿不到通过哪个域名访问的,导致转发失败
        proxy_set_header Host $host;
    }
}

然后重启nginx,大功告成。

参考链接

  1. https://blog.csdn.net/MENGHUANBEIKE/article/details/100792343?utm_source=app
  2. https://www.jianshu.com/p/00c79df1aaf0
点赞
收藏
评论区
推荐文章
菜鸟阿都 菜鸟阿都
3年前
搭建个人内网穿透服务
内网穿透本地电脑上的服务无法通过互联网让其他人访问到,通过内网穿透技术可以为自己本地的服务提供互联网入口,无需将本地服务部署在服务器上,便可以让其他人可以访问前提准备本地web服务,访问8086端口阿里云服务器Ubuntu20.04疑问问:既然在使用frp内网穿透服务时,需要服务器,才能使本地服务互联网化,为什么不直接部署在服务器上?答:使用
Wesley13 Wesley13
3年前
SSH 隧道实现内网穿透
家里买了台NETGEAR路由器刷了梅林固件,可以在USB接口上挂个存储当NAS用,发现家里的移动宽带是没有公网ip的,于是在外网访问不到内网,ddns也没法用了(不要给我推荐花生壳内网版😝)。那么,需求就是如何让外网访问到内网ip。于是想到了从内网到公网上的某台机器建立一条ssh隧道,通过访问公网机器把数据穿透到内网,实现方法:在内
冴羽 冴羽
2年前
一篇从购买服务器到部署博客代码的详细教程
前言我们在实现了VuePress搭建个人博客,在和实现了代码自动同步和部署Github和Gitee,但我最终还是决定自己建站,说干就干,那我们开始吧。买服务器因为个人的工作经历,选择了阿里云服务器,我们直接买个云服务器ECS,所谓ECS服务器,直接引用官方的介绍:云服务器ECS(ElasticComputeService)是一种
GoCoding GoCoding
2年前
FRP 内网穿透、反向代理
是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。本文将以暴露内网Web服务为例,实践frp的安装部署。更多应用场景,可见。安装frp主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网IP
Stella981 Stella981
3年前
CentOS8轻松搭建内网穿透frp和设置开机自动启动方法
!最高软件专注商标以及域名系统开发(https://static.oschina.net/uploads/img/202009/24161534_xOfD.jpeg)当下各种NAS各种私有云盛行的时代,如果想让其他人通过域名访问或测试本地构建的Web服务器,但是由于本地计算机没有公网固定IP,因此域名无法解析为本地计算机。此功能可以通过frp实现。
Stella981 Stella981
3年前
Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
!(https://i.loli.net/2020/04/06/7Q59J62aNeRHihG.png)一,环境说明服务器系统:centos7服务器IP地址:云服务器的公网IP域名:bjubi.com简单步骤流程:拥有一台服务器(https://www
Stella981 Stella981
3年前
SecureCRT 跳板机 内网直连
使用场景阿里云有10台服务器,只有一台开通了外网(同样也适用于在家办公时需要访问到公司内网):想通过阿里云内网IP以SSH方式访问另外9台服务器想通过阿里云内网IP以浏览器方式访问服务器中运行的web服务想通过阿里云内网IP以本机直连的方式链接服务器或某个
Stella981 Stella981
3年前
Nginx 简单配置域名跳转
暂时用到这么多,简单记录下首先要买个域名去买域名的网站后台管理配置域名解析,设置跳转到服务器公网ip直接访问公网ip的结果是访问80端口,一般web应用并不是,如tomcat默认8080服务器安装Nginx修改Nginx配置文件,转发80端口收到的请求到web应用的真实地址使生效
Stella981 Stella981
3年前
Django部署阿里云服务器(nginx+uwsgi)
前言:购买阿里云操作系统是CentOS7.764位一、下一个Xshell软件对于不习惯在阿里云终端操作的,可以下这个软件,方便后台操作。使用命令sshroot@你的服务器公网IP登录阿里云服务器。二、安装宝塔面板(方便上传文件,删除文件,修改文
融云IM即时通讯 融云IM即时通讯
10个月前
内网部署,移动端如何使用,且保障电脑端安全
"A.在企业内网自建DNS服务,然后使用域名代替公网IP重新配置;B.在互联网区域,使用互联网DNS服务将域名解析到公网IP;C.在内网区域,使用自建DNS服务将域名解析到服务器内网IP,这样内网电脑不能联网也能正常使用,互联网手机也能正常收发消息;D.如
那年烟雨落申城
那年烟雨落申城
Lv1
男 · 众安科技 · 高级Java开发工程师
是你吧,我能从很远很远的地方一眼认出你来
文章
26
粉丝
0
获赞
1