Dockerに慣れた近頃は、nginxを動かす場合にはDockerを使用することが多いです。nginxを動かしたいときは、簡易的にWebサーバを立ち上げてサイトが表示されるかを確認したりすることが多く、設定を変更する機会は多くないので。
そんな感じなのですが、Dockerで立ち上げるのも面倒なので、nginxを常時起動しようとしたらハマりました。
事象
nginxのドキュメントルートを変更したら、403 Forbiddenが出力されました。
事象の細かい確認
nginx.confの場所
nginx.confは以下の場所にあるので、改めてドキュメントルートのディレクトリが正しいかを確認します。
/etc/nginx/nginx.conf
エラーログの確認
エラーログが以下にあるので、どのようなエラーが出力されているかを確認します。
エラーログの場所
/var/log/nginx/error.log
エラーログの内容は以下になっていました。アクセス権でエラーになっているようです。
2020/02/23 22:36:14 [error] 2182#0: *4 open() "/root/mysite/index.xml" failed (13: Permission denied), client: 192.168.150.1, server: _, request: "GET /public/index.xml HTTP/1.1", host: "192.168.150.143"
対処
ググると、SELinuxを無効にするというような対処がありましたが、もともとSELinuxは無効にしていました。
ということでもう少し調べると、読み取り権限が無いことがわかりました。
ディレクトリ/root/mysite/
にはアクセス権があるのですが、/root
にはありませんでした。
そこで、以下を実施。これでちゃんと表示できるようになりました。上位ディレクトリの権限も確認しないとです。
chmod o+r /root
rootでログインして作業してるのもは良くないと思うのですが、ローカル環境だし、Docker使うという甘えから、ついついrootでログインしてしまうんですよね。。。