nginx.confが/websitesで提供されるように設定されている場合、Nginx 403エラー

nginx.confが/websitesで提供されるように設定されている場合、Nginx 403エラー

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つです。

  1. chmodコマンドは問題ないようですが、権限が正しく設定されていません。
  2. SELinuxには、あなたの人生をより良くするためのいくつかのことがあります。

おすすめ記事