rein 主要用于进行反向代理 IP 地址和端口,功能类似于 nginx
的 upstream
模式和rinetd
的功能,由于rein
使用了golang
语言开发,并且提供已经编译好的可下载版本,在部署配置方面比它们要方便些。
功能列表:
IP
和端口(upstream
模式)。http
协议)分享(fileshare
模式)。inps / inpc
模式)rein
支持模式:模式 | 说明 |
---|---|
upstream |
反向代理模式 |
fileshare |
提供本地文件的快速网络(http 协议)分享 |
inps |
内网穿透的服务器端,inps 需要部署在有公网地址服务器上(版本 >= 1.0.5) |
inpc |
内网穿透的客户机端,inpc 部署在能访问互联网,没有公网 IP 地址的 PC 或服务器上(版本 >= 1.0.5) |
inps
和 inpc
模式图解:已经编译好的版本下载地址: https://note.youdao.com/ynoteshare1/index.html?id=b1e1ad270ba1b1af97ebdf3e2c8b7403&type=note
下载 rein-amd64-linux-x.x.x.zip
如果您的 Linux 具备公网下载功能,可以直接通过下面的命令进行下载使用:
cd ~ wget http://note.youdao.com/yws/public/resource/b1e1ad270ba1b1af97ebdf3e2c8b7403/xmlnote/0AD1EF713B9A428D86631C7282A1B04F/27232 -O rein.zip # 需要安装 unzip unzip rein.zip mv rein-*-linux rein chmod +x rein ./rein -e > rein.json # modify rein.json for you ./rein -c rein.json
使用您的浏览器下载 https://note.youdao.com/ynoteshare1/index.html?id=b1e1ad270ba1b1af97ebdf3e2c8b7403&type=note
rein-amd64-windows-x.x.x.zip
并解压它。
使用下面的命令生成并修改 rein.json
配置文件
# 解压后先改名 ren rein-1.0.3-amd64-win.exe rein.exe # generate default conf 'rein.json' # 使用 cmd 时 ./rein.exe -e > rein.json # 使用 powershell 时 ./rein.exe -e | out-file -encoding ascii rein.json
生成的默认配置文件如下:
{ "upstream": [ {"source": "0.0.0.0:8150", "target": "127.0.0.1:9991"} ], "fileshare": [ {"port": "9991", "path": "."} ] }
根据您的需要进行修改配置文件后,运行:
./rein.exe -c rein.json
upstream
模式主要由 source
和 target
构成,实现的功能就是将主机上的某个IP地址与端口,映射到其他的主机(本机)和端口上。在 upstream
模式下,支持多组由 source
和 target
构成的映射对。source
是监听 IP 和端口,target
是需要转发到的 IP 和端口。
举例说明:
{ "upstream": [ {"source": "0.0.0.0:8150", "target": "127.0.0.1:9991"} ] }
此模式类似于ftp
功能,能快速将本地资源进行网络(http
方式)发布,它由port
和path
构成。port
是要开放的端口,path
是本地资源的路径。类似地,这个功能也支持多组。
举例说明:
{ "fileshare": [ {"port": "9991", "path": "/home/lz"} ] }
re 库的两种对象 Pattern :正则表达式对象 Match :匹配对象 常用内容 search 匹配字符串的第一个位置 In [1]: import re In [2]: s = "I am a simple string" In [3]: r = re.search("am", s) In [4]: r Out[4]: <re.Match object; span=(2, 4), m
rein 是一个类似 rinetd 的端口转发工具,也可以用于内外网端口转发等多种应用场景。 程序使用了 golang 开发,部署比 rinetd 更便携,下载开箱即用。 rein 的 github 地址:https://github.com/firstboot/rein 由于 rein 使用了 golang 开发,对系统环境依赖少,在一个平台上就能一次交叉编译出多个平台的可执行程序,项目主页已经
一、什么是正则表达式? 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 二、正则表达式的匹配规则 1.表示字符 ·:匹配任意除换行符'\n'外的字符,但是在DOTALL模式中也可以匹配换行符'\n
解决方法: git reset --merge 注:取消合并 git rebase 注:将当前分支重新设置基线 git diff -w +冲突的文件 注:查看冲突点,修改冲突的文件,达到提交的状态。 git rebase --continue 注:让rebase继续处理 git add 注:追加修改后的文件 git rebase --continue 注:让rebase继续处理,查看是否有其他文件
最近小虎在cpu上试跑了detection任务的程序没什么问题,但是在gpu上运行时发生了关于cuda的一些报错,发现解决问题的精华就一句话:"不可在DataLoader或DataSet内将任何数据放到CUDA上,而是等到程序运行出DataLoader之后(也就是到了train里的时候)将数据放到CUDA上。"下面给出问题解决的例子和代码。 问题CUDA error: initialization
转自:http://www.python8.org/a/fenleiwenzhang/yuyanjichu/2009/0901/150.html 今天学习了Python中有关正则表达式的知识。关于正则表达式的语法,不作过多解释,网上有许多学习的资料。这里主要介绍Python中常用的正则表达式处理函数。 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search()
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method 问题出现的背景:在一个使用 cuda 对模型训练进行加速的程序中,想要使用多进程对模型测试进行加速。 解决的办法:因为我是比较熟悉
Python re模块用法详解 在 Python 爬虫过程中,实现网页元素解析的方法有很多,正则解析只是其中之一,常见的还有 BeautifulSoup 和 lxml,它们都支持网页 HTML 元素的解析操作。本节重点讲解如何使用 re 正则解析模块实现网页信息的提取。 注意:在学习本节知识之前,您应该基本掌握了 Python re 模块的常用方法。 re模块常用方法 1) re.compile(
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method fork和spawn是构建子进程的不同方式: fork spawn 分叉 产卵 继承 非继承 从头构建一个子进程,父进程的数据拷贝到
在pytorch,dataloader里设置了num_workers > 1的时候, 会出现这个错误。 一般网上RuntimeError: Cannot re-initialize CUDA in forked subprocess解决方法之一_NLOS的博客-CSDN博客 解决方法,加上一行设定。 然而,我这里如果加上这行代码,会导致代码卡死在dataloader里面。 后面发现,代码里面设定了
用uWSGI +Flask多进程多线程部署你的深度学习应用时,访问会报这样的错 "Cannot re-initialize CUDA in forked subprocess. To use CUDA with " RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessi
cannot re-initialize CUDA in forked subprocess.To use CUDA with multiprocessing,you must use the 'spawn' start method. 报错原因: 在使用sanic实现多线程操作的时候,报出这样的错误。 解决办法: 网上搜索资料发现的三种方法: 1、
在程序最开始的地方加上: torch.multiprocessing.set_start_method(‘spawn’) 即可解决,如下第二行所示: if __name__=='__main__': torch.multiprocessing.set_start_method('spawn') args = config_parser().parse_args() data
我对许多AJAX调用运行安全检查,以查看是否有记录在案的相同IP请求。 我使用了以下一组类函数来建立IP(可以通过负载平衡器来实现,因此采用了纵向方法)。 问题是,我的用户通过代理进行操作时遇到了问题。有人能说明原因吗?我已经使用基本免费代理的在线尝试和模拟,但它似乎没有得到可变IP或任何东西-所以我不知道为什么这会说这两个IP不匹配。
我将Nginx配置为简单反向代理。 我只是使用基本设置 问题是,经过一段时间(几天)后,nginx背后的站点变得不可访问。Indead nginx尝试调用一个坏的ip(nginx后面的站点在我家盒子后面,我正在使用dyn dns,因为我的ip不固定)。这个dyn dns总是有效的(我可以直接调用我的站点),但由于不清楚的原因,Nginx被卡住了。。 如前所述,nginx只需在一段时间后给我504网
反向地址匹配通过输入地址坐标来获取对应的规范化的地址描述。 // 反向匹配参数 var geoDecodeParam = new SuperMap.GeoDecodingParameter({ x: 116.3518541194, // 横坐标 y: 40.00097839595, // 纵坐标 fromIndex: 0, // 设置返回对象的起始索引值。 toIn
我只想重定向的人从一个IP地址到一个域。 `apiversion:extensions/v1beta1种类:入口元数据:名称:web-入口注释:kubernetes.io/Ingress.allow-http:“false”nginx.Ingress.kubernetes.io/backend-protocol:“https”规范:tls: 主机: my.page.com秘密名称:tls-秘密规则
本文向大家介绍静态IP地址和动态IP地址之间的区别,包括了静态IP地址和动态IP地址之间的区别的使用技巧和注意事项,需要的朋友参考一下 静态IP地址和动态IP地址都用于标识网络或Internet上的计算机。静态IP地址由Internet服务提供商提供,并且在系统连接到网络之前一直保持固定。动态IP地址由DHCP提供,通常公司会获得一个静态IP地址,然后为其在组织网络内的计算机生成动态IP地址。 以
get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址
本文向大家介绍IP地址和MAC地址之间的区别,包括了IP地址和MAC地址之间的区别的使用技巧和注意事项,需要的朋友参考一下 MAC地址和IP地址,都用于识别网络或Internet上的计算机。MAC地址由NIC卡的制造商提供,并提供计算机的物理地址。IP地址由Internet服务提供商提供,被称为网络上连接的计算机的逻辑地址。 以下是MAC地址和IP地址之间的一些重要区别。 序号 键 MAC地址 I
什么是反向代理 反向代理(Reverse Proxy)方式是指用代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 举个例子,一个用户访问 http://www.example.com/readme,但是 www.example.com 上并不存在