我们选择 haproxy 1.8 版本以上的,编译安装到路径 /export/servers/haproxy
1make TARGET=linux2628 PREFIX=/export/servers/haproxy USE_GETADDRINFO=1 USE_ZLIB=1 USE_REGPARM=1 USE_OPENSSL=1 \
2 USE_SYSTEMD=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_NS=1
3
4make install PREFIX=/export/servers/haproxy
编辑 haproxy.conf 配置文件:
1global
2 maxconn 5120
3 chroot /export/servers/haproxy
4 daemon
5 quiet
6 nbproc 2
7 pidfile /tmp/haproxy.pid
8
9defaults
10 timeout connect 5s
11 timeout client 50s
12 timeout server 20s
13
14listen http
15 bind :80
16 timeout client 1h
17 tcp-request inspect-delay 2s
18 acl is_http req_proto_http
19 tcp-request content accept if is_http
20 server server-http :8080
21 use_backend ssh if !is_http
22
23backend ssh
24 mode tcp
25 timeout server 1h
26 server server-ssh :22
解释一下:我们在 8080 端口开了 http 服务,在 22 端口开了 ssh 服务,80端口由 haproxy 做代理转发,首先判断客户端请求是否是 http 请求,如果是就转发到 8080 端口,如果不是,就转发到 22 端口,这样就实现了 80 端口同时跑 http 和 ssh 两个服务。