公司有一个通过https进行访问的工具,这工具要多环境各一个,而且必须要有外网ip,无奈,只能前端做https的转发,但问题是我们这工具必须要求用域名访问,所以一定要能有一个基于域名(7层)的https转发工具………… 所以……本来设想的好好的LVS也跪了=。= 怎么办,又要轻量级,又要能支持域名,在网上找了半天,终于找到了一个开源的好工具!
HTTPS-SNI-Proxy !
Github地址:https://github.com/dlundquist/HTTPS-SNI-Proxy
官方给出的工具功能:
Features
- Namebased proxying of HTTPS without decrypting traffic. No keys or certificates required.
- Supports TLS and HTTP
- Supports IPv4, IPv6 and Unix domain sockets for both back end servers and listeners.
- Supports multiple listening sockets per instance.
- 支持基于域名的HTTPS代理,并且是全文转发不需要加/解密的认证.
- 还支持TLS协议和HTTP协议!
- 支持IPv4,IPv6,Unix Domain Socket.
- 支持每个实例监听多Socket.
功能我们都看到了,软件小巧玲珑,简直就是为了我们要实现的功能而生的!下面就是软件安装实施的部署了~
1.下载安装
wget https://github.com/dlundquist/HTTPS-SNI-Proxy/archive/master.zip
unzip master
cd HTTPS-SNI-Proxy-master/
./autogen.sh
./configure --prefix=/usr/local/https-sni-proxy
make install
2.配置
我们将软件安装在了/usr/local/https-sni-proxy目录下,可以简单的看到实际上目录里只有两个可用的东西,一个是sbin下的软件本身,一个是conf下的配置文件示例。程序的启动实际上非常简单,只需要运行sbin下的sni_proxy程序即可。这个程序会自动读取/etc/sni_proxy.conf文件(当然默认是木有的,需要自己去创建),也可以使用-c命令来指定去读哪个配置文件。
为了方便,我这里直接在/etc下创建一个配置文件让它自己默认去读。它的配置文件内容可以说简单易懂,我这里贴出我现在正在用的配置文件仅供大家参考。
vim /etc/sni_proxy.conf
sni_proxy.conf
# sni_proxy example configuration file # lines that start with # are comments # lines with only white space are ignored user nobody # blocks are dilimited with {…} #listen 80 { # proto http # table http_hosts #} listen 443 { proto tls table https_hosts } # named tables are defined with the table directive #table http_hosts { # wy02.weiyan.me 172.16.68.16 80 # wy03.weiyan.me 172.16.68.17 80 # wy04.weiyan.me 172.16.68.18 80 # } # named tables are defined with the table directive table https_hosts { # when proxying to sockets you should use different tables since the socket server most likely will not autodetect TLS or HTTP support02.weiyan.me 172.16.68.12 443 support03.weiyan.me 172.16.68.13 443 support04.weiyan.me 172.16.68.14 443 } |
相信大家一眼就可以看出来它的简单用法了。这个配置文件中我只示例了https的用法,http的功能注释掉了,需要的同学可以用起来。
之后就是启动了。
/usr/local/https-sni-proxy/sbin/sni_proxy
接下来,你可以做一个简单的自启动加到init.d下,方便管理。
本文出自 “For The Dream” 博客,请务必保留此出处http://foreveryan.blog.51cto.com/3508502/1162377