免费国际代理服务器代理服务器的作用是什么


上述命令会用提供的脚本启动Pipy服务器。敏锐的用户可能已经注意到,我们通过环境变量PIPY_CONFIG_FILE提供了一个远程Pipy脚本的链接,而不是一个本地文件,Pipy足够智能,可以处理这种情况。

既然我们已经通过上面的dockerrun命令暴露了本地端口,那么我们可以在同一端口上进行测试了:

如果是出于学习、开发或调试的目的,建议在本地安装Pipy(从源代码构建Pipy或针对你的操作系统下载一个预构建版本),因为它提供了Web管理控制台以及相关的文档和教程。

安装到本地后,运行pipy,不需要任何参数,就可以在端口启动管理控制台,但如果要监听不同的端口,可以通过–admin-port=参数配置。

要从源代码构建Pipy或针对你的操作系统安装预编译的二进制文件,请参考PipyGithub库的README.md文件。

通过CLI运行要启动Pipy代理,可以用一个PipyJS脚本文件运行Pipy。例如,如果需要一个简单的回显服务器,针对每个传入的请求都用所接收到的消息体进行响应,那么就用脚本tutorial/01-hello/hello.js:

$pipytutorial/01-hello/hello.js另外,在开发和调试时,可以启动带有内置WebUI的Pipy:

$pipytutorial/01-hello/hello.js–admin-port=显示命令行选项$pipy–help列出内置过滤器及其参数$pipy–list-filters$pipy–help-filters前文从概念和技术上对Pipy做了一个简短的介绍,这些内容也是我们实现一个支持缓存和负载均衡的网络代理所需要了解的,这一点我们在下一节会看到。

编写一个网络代理假设我们正在运行不同服务的单独实例,我们想要添加一个代理,根据请求的URL路径将流量转发到相关服务。这样做的好处是,我们只需要提供一个URL,并在后端扩展我们的服务,而用户不需要分别记住不同服务的URL。在正常情况下,服务会在不同的节点上运行,每个服务可以有多个实例在运行。假设在这个例子中,我们正在运行下面的服务,我们希望根据URI将流量分配给它们。

Pipy的脚本是用JavaScript编写的,你可以用任何文本编辑器来编辑它们。另外,如果你在本地安装了Pipy,就可以使用Pipy提供的Web端管理UI,它提供了语法高亮、自动完成、提示等特性,你甚至可以运行脚本,所有这些都在同一个控制台上。

好了,让我们启动一个Pipy实例,不需要任何参数,这样,Pipy管理控制台将在端口启动。现在,打开你喜欢的Web浏览器,导航到)。

创建一个Pipy程序将代码和配置分开是一种很好的设计实践。Pipy通过插件(你可以把它想成是JavaScript模块)来支持这种模块化设计。也就是说,我们将把配置数据存储在config文件夹下,把编码逻辑存储在plugins文件夹下不同的文件中。主代理服务器脚本将存储在根目录下,主代理脚本(proxy.js)将包含并组合这些单独的模块所定义的功能。一旦我们完成了下述步骤,最终的文件夹结构将是下面这个样子:

├──config│├──balancer.json│├──proxy.json│└──router.json├──plugins│├──balancer.js│├──default.js│└──router.js└──proxy.js让我们开始吧:

点击新建代码库,在对话框中输入/proxy(或任何你想使用的名称)作为代码库名称,然后点击创建。你将进入到新创建的代码库的代码编辑器。点击上面的“ ”按钮,添加一个新文件。输入/config/proxy.json(这是配置文件,我们将用来配置代理)作为文件名,然后点击创建。现在,你会看到,左侧窗格的config文件夹下多了一个proxy.json文件。点击该文件把它打开,并添加如下所示的配置信息,务必点击顶部面板上的磁盘图标来保存文件:{"listen":,"plugins":["plugins/router.js","plugins/balancer.js","plugins/default.js"]}重复步骤2和

3,创建另一个文件/config/router.json,它将存储路由信息,配置数据如下:{"routes":{"/hi/*":"service-hi","/echo":"service-echo","/ip/*":"service-tell-ip"}}重复步骤2和

3,创建另一个文件/config/balancer.json,它将存储服务到目标的映射信息,内容如下:{"services":{"service-hi":["127.0.0.1:","127.0.0.1:"],"service-echo":["127.0.0.1:"],"service-tell-ip":["127.0.0.1:"]}}现在,我们编写第一个Pipy脚本,当我们收到一个没有配置任何目标(端点/url)的请求时,它将被用作默认的后备选项。重复上述步骤,创建文件/plugins/default.js。使用default作为文件名只是一个习惯做法,并不是Pipy的要求,你可以选择任何你喜欢的名字。该脚本将包含如下代码,返回;)))如果你已经按照上面的步骤进行了操作,就可以看到类似于以下截图的东西:

现在,我们点击播放图标按钮(右起第四个)来运行我们的脚本。如果脚本没有任何错误,我们将看到Pipy运行我们的代理脚本,输出类似下面这样:

这表明我们的代理服务器正在监听端口(这是在/config/proxy.json中配置的)。我们用curl来运行一个测试:

你可以更新/config/balancer.json,加入你已经运行的服务的主机、端口等细节,以匹配你的实际情况,或者我们在Pipy中编写一个脚本,监听我们配置的端口,并返回简单的消息。

将以下代码片段保存到你本地计算机上的一个文件中,命名为mock-proxy.js,并记住文件的存储位置。

$pipy/path/to/mock-proxy.js-01-:56:31[INF][config]-01-:56:31[INF][config]Module/mock-proxy.js-01-:56:31[INF][config]================-01-:56:31[INF][config]-01-:56:31[INF][config][Listenon:::]-01-:56:31[INF][config]—–|-01-:56:31[INF][config]|-01-:56:31[INF][config]serve端口的服务。让我们在代理服务器上再做一次测试,你会看到,模拟服务返回了正确的响应。

结语来自Flomesh的Pipy是一个开源、高性能、轻量级的网络流量处理器,适用于多种场景,包括边缘路由器、负载平衡