質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

3423閲覧

nginxでAccess denied.が返ってくる

FUGAMARU-MCPE

総合スコア33

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/12/26 02:11

Raspbian Stretch Liteでnginxを用いたWebサーバー環境を構築して、WordPressをそこに引越ししようとセッティングしていて、WordPressのファイル諸々をnginxの設定ファイルで設定しているルートディレクトリに持ってきて、早速ブラウザーからアクセスしてみたのですが、「Access denied.」と表示されるだけで困っています。
nginxのエラーログを見てみたところ、

2017/12/26 10:57:13 [error] 4548#4548: *7 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 Unable to open primary script: /home/fugamaru/nginx/index.php (Permission denied)" while reading response header from upstream, client: 192.168.1.11, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "192.168.1.13"

このように表示されていました。Permission deniedということだったので、ルートディレクトリのアクセス権を777にしてみたのですが、変わりませんでした。
ルートディレクトリ(WordPressと同じディレクトリ)にphpinfoを表示するPHPファイルを置いてみたのですが、それは普通に見れました。

どなたか解決法を教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

たぶん、php-fpmNginxを組み合たせているのだと思います。ふつう/home/ユーザー名はパーミッション750700なので、Nginxからは見えません。ドキュメントルートを別のディレクトリに変更してください。

例えば、下記のようにしてNginxのドキュメントルートの変更を検討してください。
※下記fugamaru:ログインユーザーのグループ名とする

bash

1#新しいドキュメントルート作成 2sudo mkdir /home/webapp 3sudo chown nginx:fugamaru /home/webapp 4sudo chmod 775 /home/webapp 5 6cd /home/webapp 7 8#必要なWordPressなどすべて移動 9mv /home/fugamaru/nginx ./ 10 11#オーナーを変更 12sudo chown -R nginx:fugamaru ./nginx 13ls -alF ./

上記で解決できない場合は、Nginxの設定を確認してみてはいかがでしょうか?
下記では似たような構成でエラーが出てます。
https://qiita.com/jshimazu/items/01f6abc2c3f3e1667d45

また、fastcgi_paramなどの設定を正しく設定します。
https://qiita.com/kotarella1110/items/f1ad0bb40b84567cea66

投稿2017/12/26 08:41

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FUGAMARU-MCPE

2017/12/26 12:17

回答ありがとうございます。 chmodに-Rオプションを付けて一括でパーミションを変更したらアクセスできるようになりましたが、まだ読み込めないファイルがいくつかあって、例えばwp-login.phpでは、laod-styles.phpが403エラーで読み込まれません。 また別の原因なのでしょうか?
Tomak

2017/12/26 12:38

> chmodに-Rオプションを付けて一括でパーミションを変更したらアクセスできるようになりました すみません、これは具体的にどこのパーミッションをどのように変更したのでしょうか? 文章が端的過ぎてわかりません。質問に対する質問返しはできるだけしたくないので、もう少し長くてもいいのできちんと教えてほしいです。 パーミッションを変更したらアクセスできたということは、Nginxのオーナーとドキュメントルートのオーナー(所有者)がマッチしてないからだと思います。 Nginxオーナーとドキュメントルートのオナーは同じでしょうか?
FUGAMARU-MCPE

2017/12/26 13:03

申し訳ありません。/home/fugamaru/nginxを一括変更しました。 回答された通りに新しいディレクトリーを作ってルートディレクトリーもそこに設定し直したのですが、結果変わらずでした。 現在Nginxはwww-dataというユーザーが動かしているようです。/etc/nginx/nginx.confの最初にuser www-dataと書いてあったのでそうだと思うのですが。 新しく作ったディレクトリーに関してもchown www-dataでwww-dataに設定してみたのですが、変わりませんでした。
FUGAMARU-MCPE

2017/12/26 13:46

今思ったのですが、WordPressのURLが、Aレコードで家の回線に向けている独自ドメインになっているので、そのせいで、家の回線から家の回線にアクセスしようとしてファイル諸々が取得できないのですかね?
Tomak

2017/12/26 15:10

Nginxのオーナーが「www-data」なら下記のようにしてみてください。回答にも書いたようにドキュメントルートは、ログインユーザーのディレクトリではなく他のディレクトリにします。SSHアクセスする場合はセキュリティ上よろしくないので。 ---- sudo chown -R www-data ドキュメントルートのパス ログインユーザーでも書き込み権限が欲しい場合は下記のようにします。 ---- sudo chown -R :グループ名 ドキュメントルートのパス find ドキュメントルートのパス -type d | xargs sudo chmod 775 find ドキュメントルートのパス -type f | xargs -n 100 sudo chmod 664 あとは、NginxやPHPのエラーログを見て確認していきます。外部アクセスなのかローカルアクセスなかはNginxの設定に依存しますが、普通は関係ありません。
FUGAMARU-MCPE

2017/12/26 15:19

回答ありがとうございます。 回答していただいたコマンドを先程実行した後結果が変わらなかったので改めてコメントさせていただきました。わかりにくくて申し訳ありません。 それで、今やっと解決に至りました。原因はやはりWordPressに自分の回線宛のドメインが指定されているのが原因でした。スマホの回線(外部ネットワーク)からアクセスしてみたところ、見事に表示されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問