I am trying to use relayd to provide TLS acceleration for 20+ user services.
Here is my /etc/relayd.conf (with ip4 and ip6 redacted): ip4="192.168.0.1" ip6="2001:db8::" table <username01> { 127.0.0.1 } table <username02> { 127.0.0.1 } table <username03> { 127.0.0.1 } table <username04> { 127.0.0.1 } table <username05> { 127.0.0.1 } table <username06> { 127.0.0.1 } table <username07> { 127.0.0.1 } table <username08> { 127.0.0.1 } table <username09> { 127.0.0.1 } table <username10> { 127.0.0.1 } table <username11> { 127.0.0.1 } table <username12> { 127.0.0.1 } table <username13> { 127.0.0.1 } table <username14> { 127.0.0.1 } table <username15> { 127.0.0.1 } table <username16> { 127.0.0.1 } table <username17> { 127.0.0.1 } table <username18> { 127.0.0.1 } log connection http protocol https { match request header append "X-Forwarded-For" value "$REMOTE_ADDR" match request header append "X-Forwarded-By" \ match request header append "X-Forwarded-For" value "$REMOTE_ADDR" match request header append "X-Forwarded-By" \ value "$SERVER_ADDR:$SERVER_PORT" match request header set "Connection" value "close" tcp { sack, backlog 128 } tls { keypair username01.example.ircnow.org keypair username02.example.ircnow.org keypair username03.example.ircnow.org keypair username04.example.ircnow.org keypair username05.example.ircnow.org keypair username06.example.ircnow.org keypair username07.example.ircnow.org keypair username08.example.ircnow.org keypair username09.example.ircnow.org keypair username10.example.ircnow.org keypair username11.example.ircnow.org keypair username12.example.ircnow.org keypair username13.example.ircnow.org keypair username14.example.ircnow.org keypair username15.example.ircnow.org keypair username16.example.ircnow.org keypair username17.example.ircnow.org keypair username18.example.ircnow.org } match request header "Host" value "username01.example.ircnow.org" forward to <username01> match request header "Host" value "username01.example.ircnow.org" forward to <username01> match request header "Host" value "username02.example.ircnow.org" forward to <username02> match request header "Host" value "username03.example.ircnow.org" forward to <username03> match request header "Host" value "username04.example.ircnow.org" forward to <username04> match request header "Host" value "username05.example.ircnow.org" forward to <username05> match request header "Host" value "username06.example.ircnow.org" forward to <username06> match request header "Host" value "username07.example.ircnow.org" forward to <username07> match request header "Host" value "username08.example.ircnow.org" forward to <username08> match request header "Host" value "username09.example.ircnow.org" forward to <username09> match request header "Host" value "username10.example.ircnow.org" forward to <username10> match request header "Host" value "username11.example.ircnow.org" forward to <username11> match request header "Host" value "username12.example.ircnow.org" forward to <username12> match request header "Host" value "username13.example.ircnow.org" forward to <username13> match request header "Host" value "username14.example.ircnow.org" forward to <username14> match request header "Host" value "username15.example.ircnow.org" forward to <username15> match request header "Host" value "username16.example.ircnow.org" forward to <username16> match request header "Host" value "username17.example.ircnow.org" forward to <username17> match request header "Host" value "username18.example.ircnow.org" forward to <username18> } relay wwwtls { listen on $ip4 port 443 tls protocol https forward to <username01> port 8001 check icmp forward to <username02> port 8001 check icmp forward to <username03> port 8001 check icmp forward to <username04> port 8001 check icmp forward to <username05> port 8001 check icmp forward to <username06> port 8001 check icmp forward to <username07> port 8001 check icmp forward to <username08> port 8001 check icmp forward to <username09> port 8001 check icmp forward to <username10> port 8001 check icmp forward to <username11> port 8001 check icmp forward to <username12> port 8001 check icmp forward to <username13> port 8001 check icmp forward to <username14> port 8001 check icmp forward to <username15> port 8001 check icmp forward to <username16> port 8001 check icmp forward to <username17> port 8001 check icmp forward to <username18> port 8001 check icmp } relay www6tls { listen on $ip6 port 443 tls protocol https forward to <username01> port 8001 check icmp forward to <username02> port 8001 check icmp forward to <username03> port 8001 check icmp forward to <username04> port 8001 check icmp forward to <username05> port 8001 check icmp forward to <username06> port 8001 check icmp forward to <username07> port 8001 check icmp forward to <username08> port 8001 check icmp forward to <username09> port 8001 check icmp forward to <username10> port 8001 check icmp forward to <username11> port 8001 check icmp forward to <username12> port 8001 check icmp forward to <username13> port 8001 check icmp forward to <username14> port 8001 check icmp forward to <username15> port 8001 check icmp forward to <username16> port 8001 check icmp forward to <username17> port 8001 check icmp forward to <username18> port 8001 check icmp } I then run: # relayd -dvvv Then I request the web page https://username01.example.ircnow.org, and I see this debug output from relayd: startup relay_load_certfiles: using certificate /etc/ssl/username01.example.ircnow.org:443.crt relay_load_certfiles: using private key /etc/ssl/private/username01.example.ircnow.org:443.key ... parent_tls_ticket_rekey: rekeying tickets relay_privinit: adding relay wwwtls protocol 1: name https flags: used, relay flags: tls tcp flags: sack tls flags: tlsv1.2, tlsv1.3, cipher-server-preference tls session tickets: disabled type: http match request header append "X-Forwarded-For" value "$REMOTE_ADDR" match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER _PORT" match request header set "Connection" value "close" match request header "Host" value "username01.example.ircnow.org" forward to <username01> ... pfe: filter init done socket_rlimit: max open files 1024 socket_rlimit: max open files 1024 socket_rlimit: max open files 1024 socket_rlimit: max open files 1024 config_setrelay: fd passing failed for `wwwtls': Too many open files relay_privinit: adding relay www6tls protocol 1: name https flags: used, relay flags: tls tcp flags: sack tls flags: tlsv1.2, tlsv1.3, cipher-server-preference tls session tickets: disabled type: http match request header append "X-Forwarded-For" value "$REMOTE_ADDR" match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER _PORT" ... ca_engine_init: using RSA privsep engine ca_engine_init: using RSA privsep engine ca_engine_init: using RSA privsep engine ca_engine_init: using RSA privsep engine hce_notify_done: 127.0.0.1 (icmp ok) host 127.0.0.1, check icmp (4ms,icmp ok), state unknown -> up, availability 100.00% pfe_dispatch_hce: state 1 for host 1 127.0.0.1 hce_notify_done: 127.0.0.1 (icmp ok) host 127.0.0.1, check icmp (5ms,icmp ok), state unknown -> up, availability 100.00% hce_notify_done: 127.0.0.1 (icmp ok) pfe_dispatch_hce: state 1 for host 2 127.0.0.1 host 127.0.0.1, check icmp (6ms,icmp ok), state unknown -> up, availability 100.00% hce_notify_done: 127.0.0.1 (icmp ok) ... relay_tls_ctx_create: loading certificate pfe_dispatch_hce: state 1 for host 7 127.0.0.1 pfe_dispatch_hce: state 1 for host 8 127.0.0.1 pfe_dispatch_hce: state 1 for host 9 127.0.0.1 pfe_dispatch_hce: state 1 for host 10 127.0.0.1 pfe_dispatch_hce: state 1 for host 11 127.0.0.1 pfe_dispatch_hce: state 1 for host 12 127.0.0.1 pfe_dispatch_hce: state 1 for host 13 127.0.0.1 pfe_dispatch_hce: state 1 for host 14 127.0.0.1 pfe_dispatch_hce: state 1 for host 15 127.0.0.1 ... relay_launch: running relay wwwtls relay_launch: running relay wwwtls relay_tls_transaction: session 1: scheduling on EV_READ ca: ca_dispatch_relay: invalid relay hash 'SHA256:f11ab4ded2188f1eb2fb959078e32a44cc7346 4fe6d87c82da8d8b1b185d6d0f' relay: pipe closed hce exiting, pid 84447 pfe exiting, pid 60018 ca exiting, pid 67605 ca exiting, pid 33655 lost child: pid 15150 exited abnormally lost child: pid 55246 exited abnormally I thought perhaps it would help to increase the max number of open files in the daemon login class in /etc/login.conf: daemon:\ :ignorenologin:\ :datasize=infinity:\ :maxproc-cur=4096:\ :maxproc=infinity:\ :openfiles-max=4096:\ :openfiles=4096:\ :openfiles-cur=1024:\ :stacksize-cur=96M:\ :stacksize-max=96M:\ :tc=default: I made sure to set _relayd to the daemon login class using vipw, then I ran $ doas cap_mkdb /etc/login.conf $ doas relayd -dvv Still getting the same error. Question: 1) is there a more elegant relayd.conf, and 2) how can I get rid of the "socket_rlimit: max open files 1024" error?