GOLANG實現的HTTP轉HTTPS的代理
有時候需要將後端的 HTTP 服務,轉成 HTTPS,可以用一個代理。
> Reamark: 如果是 GOLANG 的後端服務,可以直接用庫go-oryx-lib/https
。
這個代理支援自簽名的證書,也支援letsencrypt的證書。
> Remark: Letsencrypt 只支援少量域名的情況,比如自己的網站,它會有請求次數限制,另外 CA 是 letsencrypt 的,商業使用者不適合用。
我們有個 HTTP API, SRS Version:
{
"code": 0,
"server": 12504,
"data": {
"major": 2,
"minor": 0,
"revision": 243,
"version": "2.0.243"
}
}
下面演示實現 HTTPS 的代理。
Self-sign Certificate
自簽名證書可以用在測試中,先生成私鑰server.key
和證書server.crt
:
openssl genrsa -out server.key 2048 &&
openssl req -new -x509 -key server.key -out server.crt -days 365
> Remark: 生成證書時會有很多提問,直接回車就好了。還可以參考 openssl 的文件,直接在命令列設定這些引數。
生成私鑰和證書後,下載 HTTPS 代理:
go get github.com/ossrs/go-oryx/httpx-static
> Remark: GOLANG 的設定請參考GO 環境配置。
> Note: 詳細引數可以直接執行httpx-static
程式不帶引數,會顯示 help。
啟動服務,代理到SRS Version:
sudo $GOPATH/bin/httpx-static -http 80 -https 443 \
-proxy http://ossrs.net:1985/api/v1/versions \
-ssc server.crt -ssk server.key
訪問本機 HTTP 和 HTTPS 就可以:
> Remark: 瀏覽器訪問自簽名證書時,可能會提示不安全,選擇高階
然後繼續瀏覽
就可以了。
LetsEncrypt Certificate
可以使用letsencrypt簽名的證書,在瀏覽器中會顯示合法的綠色,不會提示有錯誤。參考:ossrs.net。
ossrs.net 也是使用 httpx-static,引數如下:
sudo $GOPATH/bin/httpx-static -http 80 -https 443 \
-lets=true -domains ossrs.net
> Remark: 注意在區域網的機器無法使用,因為 ACME 會有反向驗證,也就是你的伺服器得能在公網訪問到。
Advance Proxy
如果需要代理所有的 API 怎麼辦呢?直接指定父目錄就好,如果指定/
則代理所有的請求。例如:
下面的命令,代理所有的/api
請求:
sudo $GOPATH/bin/httpx-static -http 80 -https 443 \
-proxy http://ossrs.net:1985/api \
-ssc server.crt -ssk server.key
下面的命令,代理所有的請求,相當於做了映象:
sudo $GOPATH/bin/httpx-static -http 80 -https 443 \
-proxy http://ossrs.net/ \
-ssc server.crt -ssk server.key
其他的引數請參考httpx-static
的引數。
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Golang如何實現HTTP代理伺服器GolangHTTP伺服器
- NGINX使用rewrite實現http 跳轉 httpsNginxHTTP
- Nginx配置正向代理支援HTTP和HTTPS轉發NginxHTTP
- HTTP代理,HTTPS代理還是SOCKS代理?HTTP
- Nginx(五):http反向代理的實現NginxHTTP
- 9、http隧道、https、SSL層、http代理、線上代理、socks代理區別HTTP
- Nginx 根據不同的域名來代理轉發內部主機-HTTP和HTTPSNginxHTTP
- HTTP和HTTPS有什麼區別?如何實現網站的HTTPS?HTTP網站
- Nginx透過https方式反向代理的簡單實現NginxHTTP
- 阿里雲配置http轉https阿里HTTP
- 如何把HTTP轉成HTTPS?HTTP
- 網站實現https加密比http的優勢有哪些網站HTTP加密
- 透過介面拿到代理,返回代理列表(只有http,無https)HTTP
- Rust中用ntex快速實現http代理RustHTTP
- Privoxy將Socks代理轉化HTTP代理HTTP
- privoxy將socks代理轉為http代理HTTP
- 基於libcurl實現REST風格http/https的get和postRESTHTTP
- 基於Apache搭建HTTP HTTPS 正向代理 反向代理伺服器ApacheHTTP伺服器
- 如何將自己的網站從 HTTP 的轉換為 HTTPS 的網站HTTP
- HTTP與HTTPS詳解 海外代理IP介紹HTTP
- Nginx實現301跳轉至https的根域名展示NginxHTTP
- HTTPS代理的工作原理HTTP
- HTTP與HTTPS代理有何區別?HTTP工作流程介紹HTTP
- 在 Golang 中實現一個簡單的Http中介軟體GolangHTTP
- http 代理的作用HTTP
- 安裝SSL證書的網站如何實現HTTP重定向到HTTPS網站HTTP
- Golang 心跳的實現Golang
- HTTP 與 HTTPS 的區別HTTP
- http和https的區別HTTP
- http與https的區別HTTP
- http和https的區別?HTTP
- http,https的工作流程HTTP
- HTTPS 和 HTTP 的區別HTTP
- HTTPS和HTTP的區別HTTP
- HTTPS 和HTTP的介紹HTTP
- gout 新版本釋出,golang實現的http 流式客戶端GolangHTTP客戶端
- 用 let's Encrypt 實現 HTTPS 示例( fasthttp 與net/http)HTTPAST
- 轉載golang中net/http包用法GolangHTTP
- 有哪些比較實用的全球http代理HTTP