GOLANG实现的HTTP转HTTPS的代理
2017-10-13 12:14
555 查看
参考gocn
有时候需要将后端的HTTP服务,转成HTTPS,可以用一个代理。
Reamark: 如果是GOLANG的后端服务,可以直接用库
这个代理支持自签名的证书,也支持letsencrypt的证书。
Remark: Letsencrypt只支持少量域名的情况,比如自己的网站,它会有请求次数限制,另外CA是letsencrypt的,商业用户不适合用。
我们有个HTTP API, SRS Version:
下面演示实现HTTPS的代理。
Remark: 生成证书时会有很多提问,直接回车就好了。还可以参考openssl的文档,直接在命令行设置这些参数。
生成私钥和证书后,下载HTTPS代理:
Remark: GOLANG的设置请参考GO环境配置。
Note: 详细参数可以直接运行
启动服务,代理到SRS Version:
访问本机HTTP和HTTPS就可以:
HTTP: http://localhost/api/v1/versions
HTTPS: https://localhost/api/v1/versions
Remark: 浏览器访问自签名证书时,可能会提示不安全,选择
ossrs.net也是使用httpx-static,参数如下:
Remark: 注意在局域网的机器无法使用,因为ACME会有反向验证,也就是你的服务器得能在公网访问到。
下面的命令,代理所有的
下面的命令,代理所有的请求,相当于做了镜像:
其他的参数请参考
有时候需要将后端的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就可以:
HTTP: http://localhost/api/v1/versions
HTTPS: https://localhost/api/v1/versions
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的参数。
相关文章推荐
- 详解Golang实现http重定向https的方式
- JAVA实现http/https的Post、Get、代理访问请求
- C++实现搜狗浏览器加速代理客户端(HTTP/HTTPS)的核心代码
- NodeJS实现HTTP/HTTPS代理 - 刘春龙的博客
- 实现http/https的代理及证书导入
- nginx(https)反向代理tomcat(http)的实现
- 利用AFNetworking 的AFHTTPSessionManager代码实现代理的方式访问任意指定IP地址,解决域名DNS上的问题
- nginx中实现把所有http的请求都重定向到https
- PHP + curl 实现 http 或 https 抓取数据:
- 一个简单的tcp代理(golang实现)
- httpclient 支持代理和http & https
- JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
- 82ip网 - 每日更新50万HTTP和HTTPS代理IP!
- PHP实现http与https转化
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现
- 一个简单的Golang实现的HTTP Proxy
- 在项目中配置ssl实现http-https的切换
- HTTP协议请求实现类CloseableHttpClient和HttpsURLConnection及HttpURLConnection
- PHP简单实现HTTP和HTTPS跨域共享session解决办法
- HTTPD 服务 http与https的实现