サブディレクトリからファイルを提供するようにnginxを設定する

サブディレクトリからファイルを提供するようにnginxを設定する

私は非常にシンプルなファイルサーバーシステムを設定しています。 nginxをインストールし、/homeユーザーのホームディレクトリにあるファイルを提供するようにルートディレクトリを設定しました。

http://12.34.56.78/user1/testfile.binところで、ブラウザを使ってファイルをダウンロードしようとすると、「403 Forbidden」と表示されます。ただし、ブラウザを使用して接続すると、http://12.34.56.78/私が入れたデフォルトのインデックスページが表示されます/home/

nginxにユーザーディレクトリにファイルを提供させる方法は?例えば

/home/user1

/home/user2

また、ルートディレクトリを除外したい場合

/home

およびシステムファイル

.bash_history .bash_profile .bashrc (例:名前がドットで始まるすべてのファイル)

提供されるファイルから?

答え1

Nginxにはユーザーファイルを読み取る権限がありません。すべてのユーザーファイルをネットワークに保存することは非常に悪い考えです。

より良いアイデアは専用カタログを提供ユーザーのホームディレクトリにあります。

wwwアクセス時に各ユーザーのフォルダ内のフォルダを使用できるようにするには、/<USER>次の場所を使用します。

location ~ ^/(.+?)(/.*)?$ {
  alias /home/$1/www$2;
  index  index.html index.htm;
  autoindex on;
}

また、Nginxがこのディレクトリにアクセスできるようにする必要があります。

$ chmod 0755 /home/$USER/www

答え2

403 エラーは、特権の問題によって発生することがよくあります。 Webディレクトリのファイルは誰でも読むことができなければならず(chmod 644または664)、ディレクトリは誰でも読んで実行できる必要があります(chmod 755または775)。

答え3

上記のすべての答えは有効な説明を提供します。これまで言及されていないのは、error 403キャッシュの設定に基づいて正しい権限を設定した後でも、キャッシュによってこれが続く可能性があることです。

これが発生しないようにするには、キャッシュをリセットしてください。

rm -r /path/to/nginx/cache/*
systemctl restart nginx

関連情報