OpenBSDのchrootはガチである
OpenBSDは、ともかく<お堅い>ので、普通のノリで<ま、nginxで、ホスト作るか>的にやると、動きません。
OpenBSDのpkg_addで、nginxをインストールしたとしましょう。
一通り設定をおえて、 /var/www/に、自分のホームディレクトリにつくってあるmysiteというパスを<シンボリックリンク>で作るとします。
doas ln -s /home/自分/web/mysite /var/www/
もうこの時点で駄目です。
なぜなら、chrootが、/var/wwwでハードコーディングされており、それが、nginxの<プロセス挙動ルート>です。
その外の場所にあるものは、シンボリックリンクでは、使えません。
あるいは、外部のホスト名をIPで引くような(あるいはその逆)スクリプト(たとえばphpなりpythonなり)を、WEBで動作させようとします。
そのままでは、エラーとなります。なぜか?。nginxのchrootが、/var/wwwですので、/etc/resolv.confは<外部>なので見に行けないのです。
なので、
mkdir /var/www/etc
cp /etc/resolv.conf /var/www/etc
が必要です。(もちろんシンボリックリンクでは無理です)。
つまり、OpenBSDでは、chrootはがちに機能しています。(機能するようにパッケージも作ってあります)。
サーバ用デーモン(relaydなりOPENsmtpdなり)をいじる場合は、こいつを常に意識しておく必要があります。
じゃあ、<あたいのmysiteはどうするんだ?>ということになりますが、これは、明示的にnginxのchrootを<外す>ようにします。
rcctl set nginx flags “-u”
これで、とりあえず、これでシンボリックリンクがきくので
ln -s /foo/bar/website /var/www
などとすると、/var/www配下としてファイルアクセスは可能となります。
でも、これは、決して /var/wwwから全部自由になったわけではありません。
続きは、別のページにて。