Hello,
I had a need to monitor some services that are being multiplexed/proxied
by Nginx with the stream module like so:
stream {
map $ssl_preread_alpn_protocols $proxy {
default 127.0.0.1:8443;
~\bsmtp\b 127.0.0.1:465;
~\bimap\b 127.0.0.1:993;
}
server {
listen 443;
listen [::]:443;
proxy_pass $proxy;
ssl_preread on;
}
}
This detects the ALPN handshake and passes the traffic through to the
real IMAP or SMTP backend. Monitoring this was not possible with Xymon,
but I have a working implementation attached. This will allow you to
define a new protocol like
[imaps443]
options ssl,alpn=imap
port 443
Now I can successfully monitor these services. I considered trying to
extend the http monitoring tests to allow this as well so you can force
HTTP/2 or HTTP/3 even but I don't think that's possible. Perhaps in
another life the HTTP testing should be refactored around libcurl so a
giant featureset becomes automatically available... :)
Disclaimer: this patch was only made possible with the help of Qwen as
I'm not super experienced in C. I didn't bother cleaning up its
obnoxious inline comments, but after a cursory review it doesn't seem
like bad code...
Mark