SLT(8)
π SLT β the manual, but make it make sense π
okay so bestie, gather round, because slt is about to become your new main character. this is SLT(8) from the System Manager's Manual, and yes we're doing this in full, no skips, no cuts, periodt. π
β¨ NAME β¨
slt β multiplex a port for multiple TLS applications with SNI π
β¨ SYNOPOSIS β¨
slt config-file
(yes the section is literally spelled "SYNOPOSIS", we don't make the rules, we just respect the lore π)
β¨ DESCRIPTION β¨
so like, slt is a TLS reverse-proxy and its whole vibe is letting an administrator run multiple TLS applications on a single port. iconic, honestly. π
the way it works is: slt multiplexes incoming connections by peeking at the Server Name Indication (SNI) extension data, and then forwards the connection to the appropriate upstream server. that's it. that's the whole slay. β¨
β¨ CONFIGURATION FILE β¨
you configure slt with a simple YAML file. adorable. π¦
- specify a
bind_addrto tellsltwhere it should listen for incoming connections. π sltmay listen for any number of frontends.- each frontend is identified by the name to match in the SNI data. π·οΈ
- each frontend forwards to any number of backends.
- you may specify each backend with a hash of values.
- the only required attribute is
addr. that's the non-negotiable one, fr fr. - when more than one backend is enumerated,
sltperforms simple round-robin load balancing among them. π
πΈ an example, because visuals help πΈ
here's one for listening on port 443 of all local interfaces, multiplexing traffic for two applications, v1.example.com and v2.example.com.
v1.example.comforwards to a single upstream server on port1234. πv2.example.comforwards to two upstream hosts on different addresses:
bind_addr: ":443"
frontends:
v1.example.com:
backends:
- addr: ":1234"
v2.example.com:
backends:
- addr: "192.168.0.2:443"
- addr: "192.168.0.1:443"
π terminating TLS (optional, but cute) π
by default, slt does not terminate any TLS traffic. it only inspects connections for their SNI data before being forwarded upstream. lowkey just a lil gossip who reads the name tag and passes you along. π
but!! slt may terminate TLS traffic for any frontend by providing paths to the TLS public certificate and private key files, like so:
frontends:
v1.example.com:
tls_key: /path/to/v1.example.com.key
tls_crt: /path/to/v1.example.com.crt
π designating a default π
designate one frontend to be the default in the case that no SNI data is present in the connection, like so:
frontends:
v1.example.com:
default: true
β¨ EXIT STATUS β¨
- exit status is
0on success π - non-zero on failure π
β¨ LINKS β¨
- Source code and documentation β
https://github.com/inconshreveable/sltπ - Server Name Indication β
http://www.ietf.org/rfc/rfc3546.txtπ
β¨ AUTHOR β¨
Alan Shreve (@inconshreveable) β the icon, the legend, the moment. πβ¨
β¨ SEE ALSO β¨
π reminder bestie:sltby default does not terminate TLS, it just reads the SNI and passes the connection along. only addtls_key/tls_crtif you actually want it terminating for that frontend. don't be out here assuming things, iykyk. π
and that's the whole page, no cap. this one came from the System Manager's Manual, version dated August 2023, filed under SLT(8). take care of her, she's iconic. ππ
π«Ά
π¦ where this page comes from
- ubuntu noble: slt 0.0.git20140301-6build3 Β· Apache-2.0
- ubuntu questing: slt 0.0.git20140301-6build3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms