websites
そのディレクトリ/
にフォルダを作成し、フルアクセス許可を与えましたsudo chmod -R 777 /websites/
。
/etc/nginx/conf.d/default.conf
その後、そのディレクトリを指すように変更しましたwebsites
。
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;
}
}
403 Forbidden
しかし、サーバーのパブリックIPを検索しようとすると。
なぜこれが起こるのですか?どうすれば解決できますか?
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"
答え1
エラーログには、次のように非常に明確に記載されています。
- nginxは読み込もうとします
/websites/index.html
が、読み取れません。 - そのため、構成のためではなく、403エラーが発生します。
それは13: Permission denied
システムエラーだからです。したがって、nginxが正しく設定されており、ファイルを読み込もうとしますが、読み取れません。
次の質問はなぜできないのですか。まず、それが何をしているのかを確認する必要があります。 nginx(おそらくwww-dataなので、コマンドは:)を実行しているユーザーにSudoを実行し、sudo -u www-data /bin/bash
ファイルを直接読んでみてください(cat /websites/index.html
)。
次のステップは結果によって異なります。
@sebasthのコメントは正しいです。
ファイル/フォルダに対する権限が正しくないか、SELinuxポリシーがアクセスを許可しない可能性があります。 SELinuxを有効にした場合の監査ログ(例:
audit2why
役に立つかもしれません)。
私が考える最も可能性の高い結果は次の2つです。
chmod
コマンドは問題ないようですが、権限が正しく設定されていません。- SELinuxには、あなたの人生をより良くするためのいくつかのことがあります。
答え2
chmod 777 /var/www/your_site
問題を解決しました