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
|
|