首頁 > 綜合 > 正文

訊息:免費(fèi)代理服務(wù)器國外(國外免費(fèi)代理服務(wù)器)

2022-12-05 09:59:08來源:互聯(lián)網(wǎng)  

上述命令會(huì)用提供的腳本啟動(dòng) Pipy 服務(wù)器。敏銳的用戶可能已經(jīng)注意到,我們通過環(huán)境變量PIPY_CONFIG_FILE提供了一個(gè)遠(yuǎn)程 Pipy 腳本的鏈接,而不是一個(gè)本地文件,Pipy 足夠智能,可以處理這種情況。

下面是tutorial/01-hello/hello.js文件的內(nèi)容,供參考:

pipy().listen(8080) .serve!”。


(相關(guān)資料圖)

既然我們已經(jīng)通過上面的docker run命令暴露了本地 8080 端口,那么我們可以在同一端口上進(jìn)行測(cè)試了:

$ curl !”。

如果是出于學(xué)習(xí)、開發(fā)或調(diào)試的目的,建議在本地安裝 Pipy(從源代碼構(gòu)建 Pipy 或針對(duì)你的操作系統(tǒng)下載一個(gè)預(yù)構(gòu)建版本),因?yàn)樗峁┝?Web 管理控制臺(tái)以及相關(guān)的文檔和教程。

安裝到本地后,運(yùn)行pipy,不需要任何參數(shù),就可以在6060端口啟動(dòng)管理控制臺(tái),但如果要監(jiān)聽不同的端口,可以通過–admin-port=參數(shù)配置。

監(jiān)聽 6060 端口的 Pipy 管理控制臺(tái)

要從源代碼構(gòu)建 Pipy 或針對(duì)你的操作系統(tǒng)安裝預(yù)編譯的二進(jìn)制文件,請(qǐng)參考PipyGithub 庫的 README.md 文件。

通過 CLI 運(yùn)行要啟動(dòng) Pipy 代理,可以用一個(gè) PipyJS 腳本文件運(yùn)行 Pipy。例如,如果需要一個(gè)簡(jiǎn)單的回顯服務(wù)器,針對(duì)每個(gè)傳入的請(qǐng)求都用所接收到的消息體進(jìn)行響應(yīng),那么就用腳本tutorial/01-hello/hello.js:

$ pipy tutorial/01-hel lo/hello.js另外,在開發(fā)和調(diào)試時(shí),可以啟動(dòng)帶有內(nèi)置 Web UI 的 Pipy:

$ pipy tutorial/01-hello/hello.js –admin-port=6060顯示命令行選項(xiàng)$ pipy –help列出內(nèi)置過濾器及其參數(shù)$ pipy –list-filters$ pipy –help-filters 前文從概念和技術(shù)上對(duì) Pipy 做了一個(gè)簡(jiǎn)短的介紹,這些內(nèi)容也是我們實(shí)現(xiàn)一個(gè)支持緩存和負(fù)載均衡的網(wǎng)絡(luò)代理所需要了解的,這一點(diǎn)我們?cè)谙乱还?jié)會(huì)看到。

編寫一個(gè)網(wǎng)絡(luò)代理假設(shè)我們正在運(yùn)行不同服務(wù)的單獨(dú)實(shí)例,我們想要添加一個(gè)代理,根據(jù)請(qǐng)求的 URL 路徑將流量轉(zhuǎn)發(fā)到相關(guān)服務(wù)。這樣做的好處是,我們只需要提供一個(gè) URL,并在后端擴(kuò)展我們的服務(wù),而用戶不需要分別記住不同服務(wù)的 URL。在正常情況下,服務(wù)會(huì)在不同的節(jié)點(diǎn)上運(yùn)行,每個(gè)服務(wù)可以有多個(gè)實(shí)例在運(yùn)行。假設(shè)在這個(gè)例子中,我們正在運(yùn)行下面的服務(wù),我們希望根據(jù) URI 將流量分配給它們。

服務(wù)

URI

主機(jī):端口

service-hi

/hi/*

"127.0.0.1:8080", "127.0.0.1:8082"

service-echo

/echo

"127.0.0.1:8081"

service-tell-ip

/ip/*

"127.0.0.1:8082"

Pipy 的腳本是用 JavaScript 編寫的,你可以用任何文本編輯器來編輯它們。另外,如果你在本地安裝了 Pipy,就可以使用 Pipy 提供的 Web 端管理 UI,它提供了語法高亮、自動(dòng)完成、提示等特性,你甚至可以運(yùn)行腳本,所有這些都在同一個(gè)控制臺(tái)上。

好了,讓我們啟動(dòng)一個(gè) Pipy 實(shí)例,不需要任何參數(shù),這樣,Pipy 管理控制臺(tái)將在 6060 端口啟動(dòng)?,F(xiàn)在,打開你喜歡的 Web 瀏覽器,導(dǎo)航到 )。

創(chuàng)建一個(gè) Pipy 程序?qū)⒋a和配置分開是一種很好的設(shè)計(jì)實(shí)踐。Pipy 通過插件(你可以把它想成是 JavaScript 模塊)來支持這種模塊化設(shè)計(jì)。也就是說,我們將把配置數(shù)據(jù)存儲(chǔ)在 config 文件夾下,把編碼邏輯存儲(chǔ)在 plugins 文件夾下不同的文件中。主代理服務(wù)器腳本將存儲(chǔ)在根目錄下,主代理腳本(proxy.js)將包含并組合這些單獨(dú)的模塊所定義的功能。 一旦我們完成了下述步驟,最終的文件夾結(jié)構(gòu)將是下面這個(gè)樣子:

├── config│ ├── balancer.json│ ├── proxy.json│ └── router.json├── plugins│ ├── balancer.js│ ├── default.js│ └── router.js└── proxy.js讓我們開始吧:

點(diǎn)擊新建代碼庫,在對(duì)話框中輸入/proxy(或任何你想使用的名稱)作為代碼庫名稱,然后點(diǎn)擊創(chuàng)建。你將進(jìn)入到新創(chuàng)建的代碼庫的代碼編輯器。點(diǎn)擊上面的“+”按鈕,添加一個(gè)新文件。輸入/config/proxy.json(這是配置文件,我們將用來配置代理)作為文件名,然后點(diǎn)擊創(chuàng)建。現(xiàn)在,你會(huì)看到,左側(cè)窗格的config文件夾下多了一個(gè)proxy.json文件。點(diǎn)擊該文件把它打開,并添加如下所示的配置信息,務(wù)必點(diǎn)擊頂部面板上的磁盤圖標(biāo)來保存文件:{ "listen": 8000, "plugins": [ "plugins/router.js", "plugins/balancer.js", "plugins/default.js" ]}重復(fù)步驟 2 和 3,創(chuàng)建另一個(gè)文件/config/router.json,它將存儲(chǔ)路由信息,配置數(shù)據(jù)如下:{ "routes": { "/hi/*": "service-hi", "/echo": "service-echo", "/ip/*": "service-tell-ip" }}重復(fù)步驟 2 和 3,創(chuàng)建另一個(gè)文件/config/balancer.json,它將存儲(chǔ)服務(wù)到目標(biāo)的映射信息,內(nèi)容如下: { "services": { "service-hi" : ["127.0.0.1:8080", "127.0.0.1:8082"], "service-echo" : ["127.0.0.1:8081"], "service-tell-ip" : ["127.0.0.1:8082"] }}現(xiàn)在,我們編寫第一個(gè) Pipy 腳本,當(dāng)我們收到一個(gè)沒有配置任何目標(biāo)(端點(diǎn)/url)的請(qǐng)求時(shí),它將被用作默認(rèn)的后備選項(xiàng)。重復(fù)上述步驟,創(chuàng)建文件/plugins/default.js。使用 default 作為文件名只是一個(gè)習(xí)慣做法,并不是 Pipy 的要求,你可以選擇任何你喜歡的名字。該腳本將包含如下代碼,返回 ;)))如果你已經(jīng)按照上面的步驟進(jìn)行了操作,就可以看到類似于以下截圖的東西:

現(xiàn)在,我們點(diǎn)擊播放圖標(biāo)按鈕(右起第四個(gè))來運(yùn)行我們的腳本。如果腳本沒有任何錯(cuò)誤,我們將看到 Pipy 運(yùn)行我們的代理腳本,輸出類似下面這樣:

這表明我們的代理服務(wù)器正在監(jiān)聽 8000 端口(這是在/config/proxy.json中配置的)。我們用 curl 來運(yùn)行一個(gè)測(cè)試:

$ curl -i :

$ curl -i 這個(gè)消息,因?yàn)槲覀儧]有在配置的目標(biāo)端口上運(yùn)行服務(wù)。

你可以更新/config/balancer.json,加入你已經(jīng)運(yùn)行的服務(wù)的主機(jī)、端口等細(xì)節(jié),以匹配你的實(shí)際情況,或者我們?cè)?Pipy 中編寫一個(gè)腳本,監(jiān)聽我們配置的端口,并返回簡(jiǎn)單的消息。

將以下代碼片段保存到你本地計(jì)算機(jī)上的一個(gè)文件中,命名為mock-proxy.js,并記住文件的存儲(chǔ)位置。

pipy().listen(8080) .serve是存儲(chǔ)該腳本文件的位置):

$ pipy /path/to/mock-proxy.js2022-01-11 18:56:31 [INF] [config]2022-01-11 18:56:31 [INF] [config] Module /mock-proxy.js2022-01-11 18:56:31 [INF] [config] ================2022-01-11 18:56:31 [INF] [config]2022-01-11 18:56:31 [INF] [config] [Listen on :::8080]2022-01-11 18:56:31 [INF] [config] —–|2022-01-11 18:56:31 [INF] [config] |2022-01-11 18:56:31 [INF] [config] serve 端口的服務(wù)。讓我們?cè)诖矸?wù)器上再做一次測(cè)試,你會(huì)看到,模擬服務(wù)返回了正確的響應(yīng)。

小結(jié)我們使用了 Pipy 的許多特性,包括變量聲明、導(dǎo)入/導(dǎo)出變量、插件、管道、子管道、過濾器鏈、handleMessageStart、handleStreamStart和link等 Pipy 過濾器,以及JSON、algo.URLRouter、algo.RoundRobinLoadBalancer和algo.Cache等 Pipy 類。徹底解釋所有這些概念超出了本文的范圍,如果你希望了解更多信息,請(qǐng)閱讀 Pipy 的文檔。你可以通過 Pipy 的 Web 端管理 UI 查看這些文檔,并按照入門教程一步步操作。

結(jié)語來自Flomesh的 Pipy 是一個(gè)開源、高性能、輕量級(jí)的網(wǎng)絡(luò)流量處理器,適用于多種場(chǎng)景,包括邊緣路由器、負(fù)載平衡 &代理(正向/反向)、API 網(wǎng)關(guān)、靜態(tài) 為核心。

這篇文章對(duì) Pipy 做了一個(gè)非常簡(jiǎn)要的介紹和概述。GitHub 上提供了入門教程和文檔,你也可以通過 Pipy 管理控制臺(tái)的 Web UI 查看。社區(qū)非常歡迎大家為 Pipy 的發(fā)展做貢獻(xiàn),也歡迎大家在自己特定的場(chǎng)景下進(jìn)行試用,或者提供反饋和意見。

作者簡(jiǎn)介:

Ali Naqvi 是一位擁有超過 20 年 IT 行業(yè)經(jīng)驗(yàn)的專業(yè)人士。他非常熱衷于開發(fā)以及為開源軟件做貢獻(xiàn)。他主要關(guān)注開發(fā)、軟件架構(gòu)、DevOps 等領(lǐng)域。他經(jīng)常發(fā)表演講,是當(dāng)?shù)厣鐓^(qū)/分會(huì)的活躍成員,致力于傳播 OSS、DevOps 和 Agile 理念和知識(shí)。

原文鏈接:

How to Create a Network Proxy Using Stream Processor Pipy

標(biāo)簽:

相關(guān)閱讀

精彩推薦

相關(guān)詞

推薦閱讀