nghe mqtt-ssl
liên kết *:8883 ssl no-sslv3 crt /my.pem xác minh tệp ca được yêu cầu /my/pem/all_cas.pem tệp crl /my/pem/all_crls.pem
chế độ tcp
tùy chọn tcplog
đăng nhập toàn cầu
maxconn 50000
yêu cầu tcp kiểm tra độ trễ 30 giây
pki use_backend trừ khi { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
pki phụ trợ
chế độ http
máy chủ pki.my.domain someIP:443 ssl không xác minh
phụ trợ emqx_k8s_svc
chế độ tcp
đăng nhập toàn cầu
máy chủ emqx1 emqx-ee.emqx:1883 check inter 30s downinter 30s giảm 1 tăng 1
Với đoạn mã haproxy.cfg ở trên, tôi xác nhận vấn đề sau:
Khi tôi thực hiện curl/wget trên địa chỉ nghe, yêu cầu thường được chuyển tiếp đến pki phụ trợ
, như là nó phải như thế. Tuy nhiên, đồng thời, khi cố gắng kết nối với phụ trợ emqx_k8s_svc
ứng dụng khách Mosquitto vẫn bị chặn khi "gửi CONNECT" và không có kết nối nào được thiết lập.
Làm cách nào tôi có thể có điều kiện là nếu tải trọng yêu cầu thuộc loại MQTT thì hãy chuyển tiếp nó tới default_backend
và nếu kết nối KHÔNG phải là MQTT (giả sử là ứng dụng khách http), hãy chuyển tiếp nó tới pki phụ trợ
.
Tôi cũng đã thử các cách sau mà không giải quyết được:
yêu cầu tcp kiểm tra độ trễ 30 giây
use_backend pki if !{ req.payload(0,0),mqtt_is_valid }
use_backend emqx_k8s_svc if { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
------------------------------
yêu cầu tcp kiểm tra độ trễ 10 giây
use_backend pki nếu { ssl_fc }
use_backend emqx_k8s_svc if { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
LƯU Ý: tất cả đều đang chạy trong môi trường Kubernetes, ngoại trừ pki phụ trợ
ở nơi khác (nhưng có thể truy cập được) - Phiên bản HAProxy: 2.5