HOWTO Fix obhttpd[1234]: parent: send server: Protocol not supported on FreeBSD

I was putting OpenBSD Httpd (obhttpd as it is known on FreeBSD) in a jail on FreeBSD 13.0. When I fired up the webserver I got the following error in the logs:

obhttpd[1234]: parent: send server: Protocol not supported

The error occurred because FreeBSD jails do not handle localhost 127.0.0.1 the same as a normal non-jailed host.

By default the obhttpd listens on all ip addresses, including localhost.

You can fix the error and get obhttpd running in a jail by adding something like this to your obhttpd.conf file (by default /usr/local/etc/obhttpd.conf ):

#specific your external ip here
ext_ip="11.22.33.44"

chroot "/var/www"

server "www.example.com" {

####### Note the listen on now listening only to the external ip, 
####### and not localhost
listen on $ext_ip port 80

location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
location * {
block return 302 "https://$HTTP_HOST$REQUEST_URI"
}
}

...

Basically to fix it you configure obhttpd NOT to listen on localhost. That’s it. There are plenty of other examples out on the web if you need to figure out how to make it listen to multiple ip addresses.

Hopefully this got you back up and running quickly when encountering the “parent: send server: Protocol not supported ” error with obhttpd in a FreeBSD jail.

This entry was posted in Uncategorized and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply