[解決済み] Nginxが静的ファイルをサーブすると403forbiddenが表示される。
質問
誰かを助けたいだけです。そうです、あなたは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 がファイルを読めるようになるはずです。
関連
-
Nginxエージェントのリソース: net::ERR_NAME_NOT_RESOLVED の読み込みに失敗しました。
-
nginx 起動プロンプト nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
nginx 414 リクエスト URI が大きすぎます。
-
[解決済み] Nginx -- rootとaliasによる静的ファイル提供の混乱
-
[解決済み] nginx が空白の PHP ページを表示する
-
[解決済み] nginx が返すサーバーヘッダを変更するには?
-
[解決済み] nginx server_name ワイルドカードまたはキャッチオール
-
[解決済み] Nginxで単一のURLをリダイレクトするには?
-
[解決済み] nginxでproxy_passを使用しているときに応答ヘッダを追加するには?
-
[解決済み] NGINXのプロキシレスポンスでURLを書き換える方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] nginxリクエストで許容されるurlの長さを設定する方法 (エラーコード: 414, uri too large)
-
[解決済み] NGINXを設定して、サブルートで場所(同じサーバー名の下)に応じて異なるシングルページアプリケーション(SPA...すなわち静的ファイル)をデプロイする方法
-
OSError: [Errno 98] アドレスはすでに使用中です。
-
NginxのRequest Entity Too Largeの解決法
-
nginx 起動プロンプト nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
Nginxのエラー「The plain HTTP request was sent to HTTPS port」の解決方法。
-
[解決済み】NGinx デフォルトの公開WWWの場所は?
-
[解決済み】Nginx 403 forbidden for all files
-
[解決済み] NGINXのgzipでJavaScriptファイルが圧縮されない
-
[解決済み] Nginxのサブドメイン設定