frp 配置多个 web 项目,无需购买域名 (访问内网可视化界面,jupyter noterbook, visdom, tensorboard)
frp 配置多个 web 项目,无需购买域名
简单配置,参考
前言:
网上也有很多教程包括官方文档,都需要购买域名,并且把 frpc.ini 中 [web]节配置的 custom_domains 的值解析到外网的服务器,多个web项目需要多个 custom_domains(每个web项目保证唯一),统统把这些 custom_domains 解析到外网服务器,然后就可以使用,使用方式就是 custom_domains:vhost_http_port,就可以实现多个web项目的访问。
下面的方法不需要购买域名和域名解析服务,也可以实现多个web项目内网穿透使用
提出解决方法依据的原理(想快速解决问题,请跳过)
疑问: frp软件尽管配置了 custom_domains,但是统统解析到了同一台外网服务器,那为什么可以实现请求统一端口(frps.ini common 中的vhost_http_port ) 来达到访问不同web项目的需求呢?
1. 首先,我们都知道浏览器输入一个 url 的访问过程,如果是使用域名访问,那么首先需要解析域名获得真实的IP地址然后,通过TCP报文来发送。那么神奇的地方就来了,我们在 frpc.ini 中把所有的 web 项目的 custom_domains 都解析到了同一个 IP地址,并且 frps.ini 提供web访问的端口只有一个(vhost_http_port),按照socket建立连接,我们有了(IP,Port)这个元组就可以唯一确定这个连接了,因此我们可以断定所有配置的内网的web项目全部使用这一个socket完成
2. 那使用一个socket链接如何区分不同的内网web项目呢?
回想 frpc.ini ,我们在这里配置了不同的 custom_domains, 这就是关键,fpr server只有通过这个标识才能分发不同的数据到不同的web项目。因此,在我们通过 custom_domains:vhost_http_port 来访问目的 web项目时候,必要要保证 custom_domains 被传递到了 frp server,这样才能被分发。frp软件采用http中host字段来保证这个事情,当我们使用浏览器请求目标网站,浏览器自动把目的RUL域名填到 http request header 的host字段。因此,当这个请求到达 frp server的时候,只要通过查找与 request header host 对应的 web项目即可,这样就实现了一个端口分发的问题。(类似于Nginx中端口分发,只不过那里使用的 url 前缀进行分发,这里使用的 request header host 字段)
3. 看到这里你就明白该怎么做了(笑)
我们只要配置本机的 host 文件,追加每个 custom_domains 到 公网服务器的解析即可
通过这样就可以达到,custom_domains 被顺利放在 请求的header host字段,并且也不需要购买域名实现本地解析。
=========== 实践派 ==============
一、配置 frpc.ini [common]server_addr = xx.xx.xx.xx
[common]
server_addr = xx.xx.xx.xx
server_port = 7000
[ssh_sx]
type = tcp
local_ip = 127.0.0.1
local_port =
remote_port = [web_9990]
type = http
local_ip = 127.0.0.1
local_port = 9990 #网站使用的端口
custom_domains = a.free.domain #随便写个域名保证唯一 [web_9991]
type = http
local_ip = 127.0.0.1
local_port = 9991 #网站使用的端口
custom_domains = b.free.domain #随便写个域名保证唯一
二、配置服务器 frps.ini
[common]
bind_port =
vhost_http_port =
二、 重新启动客户端软件 ./frpc -c frpc.ini 重新启动服务端软件 ./frps -c frps.ini
三、配置本地host文件
windows : C:\Windows\System32\drivers\etc\hosts
linux: /etc/hosts
追加
xx.xx.xx.xx a.free.domain
xx.xx.xx.xx b.free.domain
xx.xx.xx.xx 是你的公网服务器IP 地址
刷新 host文件,使得新配置生效:
windows: ipconfig.exe /flushdns
linux: systemctl restart nscd
四、打开浏览器
输入: a.free.domain:8080 即可访问 web项目 web_9990
输入: b.free.domain:8080 即可访问 web项目 web_9991
custom_domains
frp 配置多个 web 项目,无需购买域名 (访问内网可视化界面,jupyter noterbook, visdom, tensorboard)的更多相关文章
- 一个tomcat服务器上部署多个Web项目,不同域名访问
[参考]一个tomcat服务器上部署多个项目,不同域名访问 我们一个服务器只按装了一个tomcat服务器,现在有多个项目或者多个域名访问,下面来进行配置 在这里我们只需要修改conf下的server. ...
- tomcat发布web项目,支持域名
首先需要安装JDK,不是Linux自带的OpenJDK,参考下面的文章: centos下 安装jdk 设置java环境变量:编辑这个/etc/profile文件: export JAVA_HOME=/ ...
- 关于idea中,web项目启动tomcat,访问资源报错404
背景: web项目启动tomcat,访问相应的资源,报错404,前提资源路径是没错的. 原因: 1.确定是不是web项目 不是的话: 配置web-inf的路径和webroot(web根目录)的路径 2 ...
- 基于frp的内网穿透实例1-通过SSH访问内网机器
原文地址:https://wuter.cn/1804.html/ 老母鸡终于到了,作为一个能运行linux系统的四核1G硬件,它还是比较小巧的. FRP 全名:Fast Reverse Proxy.F ...
- 一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程
说明:内网穿透工具之前已经介绍了不少了,比如Frp.lanproxy.Holer等,现在再介绍个带Web面板的穿透工具nps,之前叫easyProxy,只是改名了而已,该工具是一款使用go语言编写的轻 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- [笔记] 使用frp从外网访问内网
之前尝试过otunnel,也记录过使用方法,见[笔记] 使用otunnel从外网访问内网,但是用了几天发现还是不够稳定. 然后尝试frp,发现性能稳定,够用,将过程及配置分享在这里吧. 需求 内网机器 ...
- 内网客户 通过 公网域名/ip 访问内网web服务器 出错
在一内部局域网中, client 内网地址为 10.0.0.2 web 服务器内网地址为 10.0.0.1 外网地址为 211.6.15.1 域名为 xx.love.com ...
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
随机推荐
- Python面试题之下面代码会输出什么
def f(x,l=[]): for i in range(x): l.append(i*i) print l f(2) f(3,[3,2,1]) f(3) 答案: [0, 1] [3, 2, 1, ...
- 开启linux下面vsftp自身的服务
最近业务需求搞了一下sftp,配合samba感觉还是不错的. 上干货:笔者的环境是centos7.4 1.建立一个名为sftpusers的sftp用户组 groupadd sftpusers 2.建立 ...
- go build报错cannot find package
go env 关键数据是这样的 GOPATH="/home/zzy/goProject" GOROOT="/usr/local/go" 项目目录是这样的 goP ...
- System.Web.Mvc 4.0.0.1 和 4.0.0.0 区别
只是一个安全补丁的问题: http://www.microsoft.com/zh-cn/download/details.aspx?id=44533&WT.mc_id=rss_alldown ...
- 从URL输入到页面展现,过程中发生了什么?
从在地址栏中输入了URL,到浏览器展现出页面整个过程中,大概经历了如下过程: 在浏览器地址中输入了URL并回车 域名解析 服务器处理请求 浏览器处理 网页的绘制 一.在浏览器地址中输入URL 首先解释 ...
- GitHub-Hexo-Blog 集成Gitalk评论插件
在本文)末尾可查看先查看效果: 1. 新建New OAuth App 在github中,Settings / Develpoer settings OAuth Apps / New OAuth App ...
- #ifdef 宏定义一个main编译客户端服务端2套代码
#include <iostream> using namespace std; #include "ProWrapper.h" #include "Serv ...
- 前端学习(二)css样式笔记(笔记)
background-image:url(img/xiaofeiji.jpg)背景图:url(图片路径):(背景图默认平铺) background-repeat:repeat-x/repeat-y/n ...
- python_django_分页
分页:把从数据库中的数据分为多页在客户端显示. 在django中,可通过这两个对象来实现: Paginator对象 Page对象 Paginator对象与Page对象的关系: paginator对象调 ...
- 【BZOJ5093】图的价值
题面 Description "简单无向图"是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简 ...