私はwebsites
フォルダを/
ディレクトリに作成し、Sudo chmod -R 777 /websites/
で完全な権限を与えました。
その後、websites
ディレクトリを指すように/etc/nginx/conf.d/default.conf
を変更しました。
server {
listen 80;
server_name localhost;
location / {
root /websites;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /websites/nginx/html;
}
}
しかし、サーバーのパブリックIPを参照しようとすると、403 Forbidden
が発生します。
なぜそれが起こっているのですか?どうすれば解決できますか?
私はこれをnginx error.logに持っています:
2017/08/27 20:41:03 [error] 3849#3849: *37 "/websites/index.html" is
forbidden (13: Permission denied), client: **.**.130.159, server:
localhost, request: "GET / HTTP/1.1", Host: "**.**.**.120"
エラーログは非常にはっきり言っています:
/websites/index.html
を読み込もうとしますが、読み込めません13: Permission denied
のせいです。システムエラーです。したがって、nginxは適切に構成され、そのファイルを読み取ろうとしますが、できません。
次の質問は、なぜそれができないのかということです。まず、それが何をするかを確認する必要があります。 nginxが実行されているユーザー(おそらくwww-dataであるため、コマンドはSudo -u www-data /bin/bash
)にSudoを送信し、そのファイルを自分で読み取ってみます(cat /websites/index.html
)。
次のステップは、結果によって異なります。
@sebasthは彼のコメントに権利を持っています:
ファイル/フォルダーのアクセス許可が間違っているか、SELinuxポリシーがアクセスを許可していない可能性があります。 SELinuxを有効にしている場合は、監査ログを確認する必要があります(
audit2why
などのツールが役立つ場合があります)。
私は2つの最も可能性の高い結果だと思います:
chmod
コマンドは問題ないように見えますが、権限が正しく設定されていませんでした