httpdについて (OpenBSD)

OpenBSD 7.8 amd64 で檢證。

OpenBSD に附屬する httpd は静的サイトの公開に充分な機能を持つ。

ここで未だ解説してゐないが、cgi や php を使用することもできる。

httpd.confの設定と起動

httpd を起動する前に /etc/httpd.conf の作成と編輯をする。

設定の見本は /etc/examples/httpd.conf に格納されてゐる。

詳細は mannual page の httpd(8)同 httpd.conf(5) を參照。

設定した後で rcctl から httpd の有效化、起動をする。

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

使用例

静的ファイルの公開

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 に次の内容を記述する。

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

default の部分の名前は任意だが、所謂 virtual host を使用する場合は然るべき hostname を記載する。

listen on に ip address を設定すると公開範圍を限定できる。

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

$ doas rcctl stop httpd
$ doas rcctl start httpd

適當な web UA で接續してみる。

$ 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 などと併用する場合に發生する。 囘避するには cron などを設定して wg-quick up の後で httpd を起動するとよいはず (未檢證)

外部參照

OpenBSD httpd 7.3: Web サーバー | OpenBSD Solutions ブログ

httpd.rocks - Setup an HTTPS-enabled webserver with httpd on OpenBSD

httpd | OpenBSD Handbook

奧附

美々蝶々

更新 2025-12-31 (陰暦11月12日)