サーバーの設定・確認・テストにはやっぱりコマンドラインツールだな。
ブラウザはDNSキャッシュが邪魔になる。
さて、curlで http://www.daphnia.org/ にアクセスすると 403 Forbidden が返ってくる。これはnginxが動いて出していることになる。次の記事で事情がわかった。感謝。
結論はパーミッションのせいだった。nginxのセットアップスクリプトに次の行がある。
chmod +x $NGINX_ROOT
$NGINX_ROOT はWeb公開ディレクトリのパス。これで大丈夫だと思ったのが大間違い!
WSL2-CentOS8 で再現実験してみると:
[root@X1-YOGA-HIYAMA provision]# namei -om /home/hiyama/web_pub/ f: /home/hiyama/web_pub/ drwxr-xr-x root root / drwxr-xr-x root root home drwx------ hiyama hiyama hiyama drwxr-xr-x root root web_pub [root@X1-YOGA-HIYAMA provision]#
~hiyama/web_pub/ にはディレクトリx権限が許可されるが、ひとつ上の ~hiyama/ がアクセス不可。
drwx------ hiyama hiyama hiyama
nginxが ~hiyama/web_pub/index.html を読みにいっても、~hiyama=/home/hiyama/ を検索できなので 403 Forbidden となる。find $NGINX_ROOT -type d -exec chmod +x \{\} \; とかでもダメ、問題はベースディレクトリの上のディレクトリにあったのだから。
フルパスをディレクトリ成分〈セグメント〉に分解して、各ディレクトリごとに chmod + x dir をしていかなくてはならない。パスを分解するコマンドってなかったような。dirname, basename ではうまくない。sedでスラッシュを改行に置き換えてゴニョゴニョとかだろう。なんかバカみたいで気力がわかない。
ところで、nameiコマンドは便利。