[解決済み】Nginx 403 forbidden for all files
質問
CentOS 5 に PHP-FPM と共に nginx をインストールしていますが、PHP であろうとなかろうと、ファイルを提供するのに苦労しています。
Nginx は www-data:www-data として動作しており、デフォルトの "Welcome to nginx on EPEL" サイト (owner by root:root with 644 permissions) は正常にロードされます。
nginxの設定ファイルには、includeディレクティブで /etc/nginx/sites-enabled/*.conf, で、設定ファイル example.com.conf というように。
server {
listen 80;
Virtual Host Name
server_name www.example.com example.com;
location / {
root /home/demo/sites/example.com/public_html;
index index.php index.htm index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /home/demo/sites/example.com/public_html$fastcgi_script_name;
include fastcgi_params;
}
}
public_html が www-data:www-data によって所有され、2777 のファイル パーミッションを持つにもかかわらず、このサイトはコンテンツの提供に失敗しています -。
[error] 4167#0: *4 open() "/home/demo/sites/example.com/public_html/index.html" failed (13: Permission denied), client: XX.XXX.XXX.XX, server: www.example.com, request: "GET /index.html HTTP/1.1", host: "www.example.com"
nginx から 403 を受け取ったという投稿は他にもたくさんありますが、私が見たほとんどは Ruby/Passenger を使ったより複雑な設定(過去に実際に成功しました)か、上流の PHP-FPM が関与している場合にのみエラーを受け取っているので、ほとんど参考にならないようです。
私はここで何か愚かなことをしたのでしょうか?
解決方法は?
よく見落とされるパーミッションの要件として、ユーザーがそのファイルにアクセスするためには、ファイルのすべての親ディレクトリでx個のパーミッションが必要であることが挙げられます。 www-data x アクセスのために /, /home, /home/demo, などのパーミッションをチェックしてください。 私の推測では、/home はおそらく 770 で、www-data はそれを通して chdir して、どのサブディレクトリにも行くことができないようです。 もしそうなら、chmod o+x /home (またはリクエストを拒否しているディレクトリ) を試してみてください。
EDIT: パスのすべてのパーミッションを簡単に表示するために
namei -om /path/to/check
関連
-
nginx スタートアップ・エラー。nginx.serviceのジョブは、制御プロセスがエラーコードで終了したため失敗しました。
-
nginxの問題解決:上流からの応答ヘッダーの読み込み中に上流が接続を早々に切断した
-
nginx 414 リクエスト URI が大きすぎます。
-
[解決済み] NGINXのproxy_passまたはproxy_redirect
-
[解決済み] 403 Forbiddenと401 UnauthorizedのHTTPレスポンスの比較
-
[解決済み] Node.js + Nginx - 今度は何?
-
[解決済み】Nginxのロケーション優先順位
-
[解決済み】Nginx 403エラー:[folder]のディレクトリインデックスが禁止されています。
-
[解決済み] nginx が空白の PHP ページを表示する
-
[解決済み] nginx 400 "The plain HTTP request was sent to HTTPS port" エラーへの対処法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Gitはいくつかのバグフィックスを行いました。マージされていないファイルがあるため、Pullができない。
-
Nginxエージェントのリソース: net::ERR_NAME_NOT_RESOLVED の読み込みに失敗しました。
-
Nginx] エラー413 Request Entity Too Largeの解決方法
-
nginx が "414 request-uri too large" と表示される。
-
Nginx設定ファイル(nginx.conf)の設定詳細
-
[解決済み】NGinx デフォルトの公開WWWの場所は?
-
[解決済み】Nginx 403エラー:[folder]のディレクトリインデックスが禁止されています。
-
[解決済み] サーバーがGZip形式のコンテンツを配信しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] nginx が空白の PHP ページを表示する
-
[解決済み] nginxが任意のドメイン名で応答するのはなぜですか?