東京生まれHOUSE MUSIC育ち

悪そうな奴はだいたい友達なの?

nginxでドキュメントルート変更したら、403 Forbiddenが出た


スポンサードリンク

f:id:padobure:20200224105438p:plain

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でログインしてしまうんですよね。。。