
私は非常にシンプルなファイルサーバーシステムを設定しています。 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