首頁 > 綜合 > 正文

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

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

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

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

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


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

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

$ curl !”。

如果是出于學習、開發(fā)或調(diào)試的目的,建議在本地安裝 Pipy(從源代碼構(gòu)建 Pipy 或針對你的操作系統(tǒng)下載一個預構(gòu)建版本),因為它提供了 Web 管理控制臺以及相關(guān)的文檔和教程。

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

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

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

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

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

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

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

服務(wù)

URI

主機:端口

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,它提供了語法高亮、自動完成、提示等特性,你甚至可以運行腳本,所有這些都在同一個控制臺上。

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

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

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

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

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

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

$ curl -i :

$ curl -i 這個消息,因為我們沒有在配置的目標端口上運行服務(wù)。

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

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

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

$ 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ù)。讓我們在代理服務(wù)器上再做一次測試,你會看到,模擬服務(wù)返回了正確的響應(yīng)。

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

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

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

作者簡介:

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

原文鏈接:

How to Create a Network Proxy Using Stream Processor Pipy

標簽:

相關(guān)閱讀

精彩推薦

相關(guān)詞

推薦閱讀