5

我遇到了一些问题,似乎我无法让 acl 在 tcp 模式下工作,
一切都在 http 模式下工作。
这是我的配置。

frontend  http *:80
    acl http_test_acl       path_beg    -i /test
    use_backend http_test   if http_test_acl
    default_backend         http_default

backend http_test
    balance   roundrobin
    server    httptest 10.10.10.10:80 check

backend http_default
    balance   roundrobin
    server    httpdefault 10.10.10.10:80 check

############# HTTPS #################
frontend  https *:443
    mode tcp
    acl https_test_acl         path_beg -i /test
    use_backend https_test     if https_test_acl
    default_backend            https_default

backend https_test
    mode tcp
    balance   roundrobin
    server    httpstest 10.10.10.10:443 check

backend https_default
    mode tcp
    balance   roundrobin
    server    httpsdefault 10.10.10.10:443 check

不要关注 ip 10.10.10.10 因为我已经隐藏了我原来的那个。您能否让我知道为什么 https 不起作用,http 前端/后端 acl 规则工作得很好。

干杯

4

2 回答 2

11

因为您的 https 服务器处于 tcp 模式(因为它们应该用于 ssl),所以第 7 层规则将不起作用。

于 2010-11-17T06:31:28.593 回答
1

要使 acl 正常工作,请禁用 tcp 模式,然后在后端的服务器上设置 ssl(因此是 ssl 关键字)

frontend  https *:443
    acl https_test_acl      path_beg    -i /test
    use_backend     https_test  if https_test_acl
    default_backend             https_default

backend https_test
    balance   roundrobin
    server    httpstest 10.10.10.10:443 ssl check

backend https_default
    balance     roundrobin
    server  httpsdefault 10.10.10.10:443 ssl check

或者,不必在两个后端服务器上设置 ssl;在后端服务器中使用私有 IPS,并确保后端服务器上的端口不对外开放

    backend https_test
    balance   roundrobin
    server    httpstest some_private_ip:8000 check
于 2015-10-23T11:08:15.523 回答