我遇到了一些问题,似乎我无法在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 frontend / backend acl规则工作得很好。
欢呼声
答案 0 :(得分:8)
因为您的https服务器处于tcp模式(因为它们应该用于ssl),因此第7层规则不起作用。
答案 1 :(得分: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