【发布时间】:2018-04-30 10:01:46
【问题描述】:
我需要为 SSL 配置 Haproxy,这样如果 URL 中的某些关键字匹配,那么它应该转到非 SSL 端口 (8080),而对于其余的调用,它应该转到 SSL 端口 8443。
我已经为 example.com 分配了 127.0.0.1,如果 URL example.com 在浏览器中输入,那么它指向我机器中的 localhost。
在前端 SSL 中,acl 规则无法按预期工作,因为带有操作“报告”或“帐户管理”的 URL 不是指后端代理后端。所有通过 default_backend SSLappAPI 的流量,即使 URL 具有 action=reporting。
acl 不起作用,因为我正在尝试使用非 SSL 端口进行 SSL 流量,或者我在下面的 haproxy 配置中遇到任何问题。
任何帮助将不胜感激
示例网址:https://example.com/api/?uid=NrpB1vfSR01KVsxw1YI5H4&action=reporting
frontend main *:80
acl is_api url_param(action) -i host_check
use_backend appAPI if is_api
default_backend appUI
option forwardfor
frontend ssl
mode tcp
bind *:443
option tcplog
acl server_ssl urlp_sub(action) -i reporting
acl server_ssl urlp_sub(action) -i account_management
acl server_ssl hdr(host) -i example.com
acl server_ssl hdr_sub(host) -i example.com
use_backend proxybackend if server_ssl
default_backend SSLappAPI
option forwardfor
backend appUI
server ui-server 127.0.0.1:8080 check maxconn 50#ui <- leave this format to allow for selective script replacement
backend appAPI
server api-server 127.0.0.1:8080 check maxconn 750#api <- leave this format to allow for selective script replacement
timeout http-keep-alive 0s
backend SSLappAPI
mode tcp
server api-server 127.0.0.1:8443 check maxconn 800#ssl <- leave this format to allow for selective script replacement
backend proxybackend
server proxyserver 127.0.0.1:8080
【问题讨论】:
标签: ssl https load-balancing haproxy