OpenBSD httpd

・OpenBSD 7.8 amd64
・書きかけ (tips があれば隨時更新)

OpenBSD に附屬する httpd に就ての覺書。
ここでは解説しないが onion や i2p で website を公開する時にも使へる。

使用方法

設定ファイル /etc/httpd.conf を作成した後で daemon を有效化して起動する。
httpd.conf の記述方法は man httpd.conf を參照。
尚 /etc/examples/httpd.conf に見本となるファイルが存在する。

$ doas vi /etc/httpd.conf
$ doas rcctl enable httpd
$ doas rcctl start httpd

設定ファイルの記述が正しいかどうか確認するには httpd -n を使用する。

$ doas httpd -n

静的ファイルの公開例

http://localhost:3000/ でファイルを公開してみる。
まづ公開用の directory を作成して作業用の user でファイルを保存できる樣にする。

$ whoami
tak4
$ doas mkdir /var/www/public
$ doas chown tak4:www /var/www/public
$ echo hello httpd > /var/www/public/hello

設定ファイル /etc/httpd.conf に次の内容を記述する。
"default" の部分の名前は任意。
ただし同じ port で複數サイトを公開する時はここに domain を記述する必要がある。
(virtual host 的な機能)

server "default" {
    listen on * port 3000
    root "/public"
}

尚 listen on 127.0.0.1 port 3000 の樣にすると内部からのみ接續できる。
又 local IP address を指定すると、その network 内からのみ接續できる。

httpd.conf を編輯して保存できたら daemon を開始 (再開) する。

$ doas rcctl stop httpd
$ doas rcctl start httpd

適當な Web User Agent で接續してみる。

$ w3m http://localhost:3000/hello.txt

試した後は daemon を停止、無效にしておく。

$ doas rcctl stop httpd
$ doas rcctl disable httpd

【問題解決】listen onのIP adressが不正だと起動できない

httpd.conf の listen on に不正な address を指定すると httpd が動作しなくなる。
(例へば、listen on 192.168.10.10 port 3000 と指定しておきながら
自身に 192.168.10.10 が割り當てられてゐない場合など)

この場合 httpd の開始時に httpd (ok) と表示されるが process は即終了する。
/var/log/daemon には以下のログが出力されてゐる。

parent: send server: Can't assign requested address

これを解決するには該當する listen on の行を修正して httpd を起動するとよい。
可能であれば liten on * を指定する。

WireGuard などと併用する時は、wg-quick up の後で httpd が起動される樣に
cron などで設定しておけば良いはず。

外部參照

httpd(8) - OpenBSD manual pages
httpd.conf(5) - OpenBSD manual pages

OpenBSD httpd 7.3: Web サーバー | OpenBSD Solutions ブログ
httpd.rocks - Setup an HTTPS-enabled webserver with httpd on OpenBSD
httpd | OpenBSD Handbook

奧附

「美々蝶々」目次
更新 2025-10-31 (陰暦09月11日)