こんにちは、エンジニアのオオバです。

NGINXを動かしている時に
見たことのないエラーに遭遇しました。

[error] 3664#3664: *5 "/usr/share/nginx/html/index.html" is  
forbidden (13: Permission denied)  

NGINXのエラーログは
/var/log/nginx/error.log
確認できます。

解決までの手順を解説していきます。

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

結論:SELINUXとアクセス制御を無効化する

結論を先に書いてしまうと、
今回の対応はコチラです。

  1. $ sudo setenforce 0でアクセス制御の無効化
  2. /etc/selinux/内のconfigをSELINUX=disabledに編集
  3. NGINXを再起動

アクセス権限が不十分

[error] 3664#3664: *5 "/usr/share/nginx/html/index.html" is  
forbidden (13: Permission denied)  

「パーミッション(アクセス権限)が不十分です」というエラー。
調査すると、SELinuxが影響しているということがわかりました。
【ざっくりと理解する】SELinuxとは?

SELinuxのステータスを確認

以下のコマンドで、現状のSELinuxのステータスを確認します。

$ sudo getenforce  

するとEnforcingと出力されます。

Enforcingの意味は?

Enforcingとは上記の状態です。

今回セキュリティを意識する必要のない
ローカル環境であるため、アクセス制御を無効化と
SELinuxを無効化します。

アクセス制御を無効化

以下のコマンドでアクセス制御を無効します。

$ sudo setenforce 0  

再度SELinuxのステータスを確認します。

$ sudo getenforce  

permissiveと出ればアクセス制御は無効状態です。

SELinuxの無効化

この状態ではエラーが出てしまうため、
SELinux自体も無効化します。

/etc/selinux/configを開きます。
SELINUX=disabledこのように編集します。

NGINXを再起動すればSELinuxは無効化されます。

これでページにアクセスできるようになるかと思います。

オススメ記事