LoginSignup
37
34

More than 5 years have passed since last update.

nginxで403を回避するために、パブリックファイルの権限についておさらい

Last updated at Posted at 2018-02-11

nginx初学者です。
PHPやPython(Flask)を動かすのにnginxを使ってみたら、やたらめったら403が出まくる。
なので、webサーバの権限についておさらいしておく。

ファイルの置き場は迷ったら/var/www

nginxのデフォルトのドキュメントルートは /usr/share/nginx/html となっている。

ただし、そこに自作ファイルを置くのは非推奨。ソフトウェアアップグレード時に邪魔になる可能性があるため。
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#using-the-default-document-root

ということで、apacheと同じ/var/www以下に置いておく。

使用するwebサーバを意識しない構成にする意味でもここで良さそう。

/var/www以下の所有者と権限

$USER:www-dataとする

$ sudo chown $USER:www-data -R /var/www

$USER はサーバ管理者のユーザ名を表す。
rootをそのまま使うのではなく別ユーザを作って、www-dataグループに追加するのが望ましい。

www-dataとは

www-dataは、webサーバの実行時のポピュラーなユーザ/グループ名。

apache, nginxともに設定ファイルから実行時のユーザ名が変更可能で、使用するwebサーバを意識したくないないならwww-dataにしておくのがベターかもしれない。

デフォルトでwww-dataになっていることもあれば、apache, nginxであったり、アプリケーションサーバに依存したユーザ名になっていることもある。

ファイルは644, ディレクトリは755

# 出典 https://qiita.com/takeshi81/items/48ea62eae2fc7f1cb2f0
find /path/to/dir -type d -exec chmod 755 {} +
find /path/to/dir -type f -exec chmod 644 {} +

書き込み権限はサーバ管理者のみが持つ想定。

セキュリティ上の理由から、webサーバには書き込み権限を与えないことが望ましく、またwww-dataユーザをwebサーバ以外の用途で使うのも避けるべし。

SELinuxについて

今回は関係なかったがSELinuxが関係して403が返ることもある。
こちらの記事を参考にされたし。
https://qiita.com/chi9rin/items/af532d0dd9237cc65741

php-fpmについて

以下はnginxでphpを用いる場合の話。

php-fpmの設定

php-fpmでhtmlのインラインphpを呼べるようにするには設定が必要

/etc/php/7.0/fpm/pool.d/www.conf
security.limit_extensions = .php .html

php-fpm

Nginxだとファイルが見つからなかった際に403になる。

エラーログではPrimary script unknownと出力される。

よくあるのはnginxの設定でSCRIPT_FILENAMEを変更しそびれた場合。

37
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
34