這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文地址
簡介
最近由於要配置 nginx 伺服器,裡面有個代理轉寄(proxy_pass)的功能,能夠將當前伺服器接收到的請求轉寄給其他伺服器來處理。
但是在配置當中,我發現我無法確認我的 proxy_pass 是否生效,網上現成的 echo 服務又不怎麼滿足我的要求,所以就決定自己寫一個 echo 伺服器,用 Golang。
代碼
代碼在這裡 echo
具體的代碼就不做詳細介紹了,也就是用到了 Golang 的 http 庫,提供了一個 網頁伺服器和一個 websocket 伺服器,使用 logrus 作為日誌庫,原生的 template 作為模版庫。
使用
該工具為命令列工具,只能夠在命令列中啟動
啟動過後,工具會在命令列中輸出當前 網頁伺服器的地址,可以使用瀏覽器訪問
該工具有四種模式,通過 -m 參數來指定:
-m echo
html 回聲模式,這也是該軟體預設的一種模式。他的作用就是:當你請求工具提供的 網頁伺服器地址時,伺服器會將你剛才發出的請求中所有資訊都通過一個 html 文檔返回給你,類似下面這樣:
-m terminal
命令列模式,這個模式下,工具只會將請求資訊顯示在終端命令列中,訪問之前的那個 url (如 http://0.0.0.0:8888)不會有任何返回結果。命令列輸出如下:
-m file
檔案模式,該模式下,工具只會將上面 terminal 模式下的請求資訊寫入到指定檔案,預設為目前的目錄下 logs/log.txt
檔案中,但你也可以通過 -f 自訂記錄檔地址
來自訂記錄檔存放位置。
-m ws
這個也是我最喜歡的模式了,通過 websocket 技術的使用,讓我們能夠在瀏覽器中即時觀察到指定連結的訪問資訊。
該模式啟動後,照常存取控制台輸出的那個地址,然後瀏覽器會將該地址跳轉到一個新的地址上去,類似這樣:http://0.0.0.0:8888/4bf26e4f-7324-4942-a21c-706575cdb34d/client
:
在頁面中,有一個名為 Target url 的欄位,裡面的 url 便是指定的服務地址,任何用戶端一旦請求了該服務地址,他的請求資訊就會被顯示在 http://0.0.0.0:8888/4bf26e4f-7324-4942-a21c-706575cdb34d/client
這個頁面上(也就是之前你跳轉得到的地址),並且是即時更新的。
參與
當前就這麼幾種模式,如果你有任何問題,可以在 Github echoo 上給我提 Issues。