1. ホーム

Nginxでプロキシサーバーとしてブラウザで大きなファイルを読み込む際のERR_CONTENT_LENGTH_MISMATCHに対する解決策

2022-02-27 07:20:40
Nginx をリバースプロキシとして、バックエンドに tomcat を使用する場合、Chrome ブラウザでプロジェクトにアクセスすると、大きなファイルの読み込みに失敗する ERR_CONTENT_LENGTH_MISMATCH が発生します。

linuxのログを表示します。
2015/05/27 02:19:10 [crit] 29263#0: *72 open() "/usr/local/nginx/proxy_temp/3/00/0000000003" failed (13: Permission denied) while quot;http://192.168.1.177:8080/项目名/frame/js/jquery-1.10.1.min.js" host: "192.168.1.177"、 referrer: "https:// 192.168.1.177/project-name/"
2015/05/27 02:19:10 [crit] 29263#0: *77 open() "/usr/local/nginx/proxy_temp/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 192.168.1.30, server: localhost, request: "GET /プロジェクト名/フレーム/画像/DAimG_2013040242192849XA16./project/frame/image/DAimG_20130402192849XA16./proxy_temp/4/00/00000004" failed (13: Permission denied) while reading upstream jpg HTTP/1.1" ;, upstream: "http://192.168.1.177:8080/项目名/frame/image/DAimG_2013040242192849XA16.jpg", host: "192.168.1.177", referrer: "https://192.168.1.177/项目名/"
キャッシュは %nginx%/proxy_temp ディレクトリにあり、メインプロセスはパーミッションの関係でアクセスできません。ps nginx を見ると、メインプロセスのユーザーは webapp(nginx を起動したユーザー)、ワーカープロセスは nobody(nginx のデフォルトワーカーユーザーは nobody. ワーカープロセスは nobody ユーザ(user コマンドがない場合、nginx のデフォルトのワーカユーザは nobody です)、proxy_temp ディレクトリのオーナーはワーカープロセスのユーザです(ll proxy_temp で確認できます)。
nginx を停止し(nginx -s stop)、chown -R して nginx ディレクトリのすべてのパーミッションを webapp にリセットし、nginx.conf の worker_processes ディレクティブの前にコマンドを追加します。
ユーザーウェブアプリです。

最後にウェブアプリのユーザーがnginxを再起動すれば完了です。


参考文献