1. ホーム
  2. nginx

[解決済み] Nginxが静的ファイルをサーブすると403forbiddenが表示される。

2023-07-01 05:52:37

質問

誰かを助けたいだけです。そうです、あなたはnginxを使って静的ファイルを提供したいだけなのです。 nginx.conf :

location /static {
       autoindex on;
       #root /root/downloads/boxes/;
       alias /root/downloads/boxes/;
      }

しかし、結局は失敗しました。ブラウザから403 forbidden"が表示されました。

---------------------------------------- 以下、回答です。 ----------------------------------------

解答は非常にシンプルです。


方法1:'/root/downloads/boxes/'のオーナーとしてユーザでnginxを実行する。

nginx.conf :

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;

はい、1行目の" ユーザー名 noboy; " を削除してください。 # " , と変更 " 誰も Linux/OS Xでは、自分のユーザー名に変更します。 ルート とします。nginx を再起動します。

注意 走らない方がいい nginx として ルート ! これはテスト用で、ハッカーには危険です。

より詳しい情報は nginx (engine X) - What a Pain in the BUM! [13: パーミッションが拒否されました] を参照してください。


方法2: root/downloads/boxes/' の所有者を 'www-data' または 'nobody' に変更する。

ターミナル :

ps aux | grep nginx

nginx を実行しているユーザ名を取得します。これは 'www-data' です。 または '名無し' というように、nginxのバージョンによって決まります。そして、ターミナルでヒット(使用 'www-data' を実行します。)

chown -R www-data:www-data /root/downloads/boxes/

------------------------------ もうひとつ大切なこととは ------------------------------

これらの親ディレクトリ "/"です。 , "/root" , "/root/downloads" にexecute(x)パーミッションを与える必要があります。 'www-data' または '名無し' ...すなわち

ls -al /root
chmod o+x /root
chmod o+x /root/downloads

より詳しい情報は 403 Forbiddenエラーの解決方法 および Nginx 403 forbidden はすべてのファイルに対して有効です。

どうすれば解決しますか?

nginx にファイルを読み込む権限を与える必要があります。つまり、nginx プロセスを実行しているユーザに、ファイルを読み込むためのパーミッションを与える必要があります。

この nginx プロセスを実行しているユーザは user ディレクティブで設定できます。 nginx.conf :

user www-data

http://wiki.nginx.org/CoreModule#user

に与える第二引数は user はグループですが、指定しない場合はユーザーと同じものを使うので、私の例ではユーザーとグループの両方が www-data .

ここで、nginx で提供したいファイルには正しいパーミッションが設定されている必要があります。Nginx にはファイルを読み込むためのパーミッションが必要です。グループ www-data グループにこのようなファイルの読み取りパーミッションを与えることができます。

chown :www-data my-file.html

http://linux.die.net/man/1/chown

chown を使うと、ファイルのユーザとグループの所有者を変更することができます。このコマンドではグループのみを変更していますが、もしユーザーも変更したい場合は、コロンの前にユーザー名を指定します。 chown www-data:www-data my-file.html . しかし、グループパーミッションを正しく設定すれば、nginx がファイルを読めるようになるはずです。