1. ホーム
  2. nginx

ブラウザエラー net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK) 解決策

2022-02-13 13:02:49

I. 問題の発見

開発中、フロントエンドページに css や js、woff、ttf ファイルを読み込むと、しばしば次のように表示されることがあります。  ERR_CONTENT_LENGTH_MISMATCH  の場合、エラーが報告される。 しかし、jsやcssのエラーはすべて報告されるわけではなく、報告されるファイルは、報告されないファイルよりも大きい。また、エラーファイルはブラウザだけで開くことができるので、最も単純なアドレスエラーは除外されます。フロントエンドのプロジェクトはnginxでプロキシされているので、nginxのログを確認することで何か手がかりが見つかるかもしれません。

II. 問題を解決する

nginxのエラーログファイルを探す

1. nginxの設定ファイルを探す

ps -ef | grep nginx

 結果は次のようになります。

www 16951 18739 0 16:15 ?        00:00:00 nginx: worker process
www 16952 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16953 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16954 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16955 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16956 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16957 18739 0 16:15 ?        00:00:00 nginx: worker process
nginx: worker process www 16958 18739 0 16:15 ?        00:00:00 nginx: worker process
root 18739 1 0 Sep20 ?        00:00:26 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

私の開発環境のnginxの設定ファイルのパスは。/usr/local/nginx/conf/nginx.conf です。

2. エラーログファイルの場所を表示する

cat /usr/local/nginx/conf/nginx.conf

<イグ

私の開発環境の nginx のエラーログパスは cnk_data/nginx_logs/error.log です。

3. エラーログを開く

エラーの発生したファイルでフィルタリングします(ファイルが大きすぎる場合は、しばらくお待ちください)。

cat /cnk_data/nginx_logs/error.log | grep "jquery.dataTables.min.js"

 結果は次のようになります。

2019/10/16 16:11:37 [crit] 5878#0: *81035 mkdir() "/usr/local/openresty/nginx/proxy_temp/2/35" failed (13: Permission denied) while reading upstream, client: 123.116.114.84, server: sunct.goapi.youlai.cn, request: "GET /static/js/adminone/jquery.dataTables.min.js HTTP/1.1", upstream: "http://127.0.0.1:9092/static/js/adminone/jquery.dataTables.min.js", host: "sunct.goapi. youlai.cn", referrer: "http://sunct.goapi.youlai.cn/admin/index"

mkdir() Permission denied エラーの一つです。

2019/10/16 16:11:36 [crit] 5881#0: *80999 mkdir() " /usr/local/openresty/nginx/proxy_temp/1/35 " failed (13: Permission denied) while reading upstream, client: 123.116.114.84, server: sunct.goapi.youlai.cn, request: "GET /static/ js/adminone/jquery.dataTables.min.js HTTP/1.XXX.XXX.XXX.XXX.XXX.XXX.XXX. 1", upstream: "http://127.0.0.1:9092/static/js/adminone/jquery.dataTables.min. js", host: "sunct.goapi.youlai.cn", referrer: "http://sunct.goapi.youlai.cn/admin/index".Js", request: "GET /static/ js/adminone/jquery.dataTables.min.js HTTP/1;

この時点で、mkdir()の成功がなく、結果的にリクエストが失敗し、パーミッションがないため拒否されたことがわかります。

では、なぜ nginx は proxy_temp フォルダーに格納されます。

なぜなら proxy_temp は nginx のキャッシュフォルダですが、私の css と js ファイルは大きすぎるため、nginx は通常、毎回元のアドレスに直接読みに行く代わりに、キャッシュ内から取得しに行くのです。

4. 解決してみる

エラーレポートへのパス、私のは   /usr/local/openresty/nginx/。 をクリックすると、そのフォルダが表示されます。 プロキシ温度  のパーミッションが必要です。

cd /usr/local/openresty/nginx

ll

結果は以下のようになります(注。 これは、変更されたパーミッション )

状況によっては、proxy_tempフォルダのパーミッションとグループを変更すればよいでしょう。

chown www root proxy_temp

chmod -Rf 777 proxy_temp

5. nginxサービスを再起動する

nginx サービスの設定にしたがって、nginx サービスを再起動するだけです。 コマンドは以下のような感じでしょうか。

. /nginx -s reload

使っています。

/etc/init.d/nginx reload

6. ブラウザを更新する

完璧です!すべてうまくいきました。

この記事があなたの学習に役立てば幸いです。お読みいただきありがとうございました。

この記事に関連することがあれば、私に連絡することができます(連絡先はトップ記事にあります :) 私の連絡先を見る )にお問い合わせください。