rc-httpd


Thu Feb 19 17:20:37 PST 2026, jrmu@inter9.org (104.167.242.140)
rc-httpd

This guide explains how to provide a simple setup for rc-httpd to serve static web pages.

First, copy the template for tcp80 from /bin/service/!tcp80:

cpu% cp (/bin/service/)^(!tcp80 tcp80)

Next, create the FS_ROOT, the directory which is used to serve web documents:

cpu% mkdir -p /usr/$user/www/example.com

Add some files:

cpu% echo "Hello, world!" > /usr/$user/www/example.com/index.html

Put this in /rc/bin/rc-httpd/select-handler:

if(~ $SERVER_NAME example.com){ PATH_INFO=$location FS_ROOT=/usr/$user/www/$SERVER_NAME exec static-or-index } cpu% chmod +x /rc/bin/rc-httpd/select-handler

This tells rc-httpd to serve static files or an index file upon web requests with the proper FS_ROOT.

To support TLS:

cpu% cp (/bin/service/)^(!tcp80 tcp443)

Inside /bin/service/tcp443, we put:

#!/bin/rc exec tlssrv -c /sys/lib/tls/acmed/example.com.crt -r`{cat $3/remote} /rc/bin/rc-httpd/rc-httpd >>2/sys/log/www

cpu% chmod +x /bin/service/tcp443

Make sure to store the private key into secstore's factotum, so that it gets loaded automatically upon boot:

cpu% ramfs -p; cd /tmp cpu% auth/secstore -g factotum secstore password: cpu% cat /sys/lib/tls/acmed/example.com.key >> factotum cpu% auth/secstore -v -p factotum secstore password: cpu% read -m factotum > /mnt/factotum/ctl



Last modified Thu Feb 19 17:20:37 PST 2026 [ Current version | History | Create a new page ] About the server | Powered by Plan 9