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

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

[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 

使用命令启动:

./frps -c ./frps.ini 

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

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

[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 

然后启动:

./frpc -c ./frpc.ini 

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

我们不想要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,大功告成。

原文链接:https://blog.csdn.net/codeblf2/article/details/103752247

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享