ホームページ  >  記事  >  バックエンド開発  >  Nginx 経由でバックエンド アプリケーションにアクセスし、ERR_CONTENT_LENGTH_MISMATCH 問題を解決する

Nginx 経由でバックエンド アプリケーションにアクセスし、ERR_CONTENT_LENGTH_MISMATCH 問題を解決する

WBOY
WBOYオリジナル
2016-08-08 09:23:305178ブラウズ

2つの問題が発生しました

1. 日付選択機能が機能しません

2. 少し大きなファイルをダウンロードする場合、ページの半分しかダウンロードできません

デバッグ中に ERR_CONTENT_LENGTH_MISMATCH エラーが見つかりました

システム: Cent OS、Nginx、バックエンド tomcat へのプロキシ

: nginx は大きなファイルを proxy_temp ディレクトリにキャッシュしますが、このディレクトリには読み取りおよび書き込み権限がありません

解決プロセス:

ページのデバッグ、エラーのスロー: net::ERR_CONTENT_ LENGTH_MISMATCH

Chrome では、キャッシュまたは強制更新してください。応答のステータス コードは 200 です。強制更新はありません。実際の長さは一致しています

が発生します。上記のコンテンツの長さの不一致エラー

nginx 経由で Tomcat に直接アクセスしない場合、このエラーが発生することなく、システムは正常に機能します。

さまざまな検索の後、問題の説明が非常に似ていることがわかりました。nginx は圧縮用にファイルを準備するため、データストリームを処理します。圧縮された長さですが、プロキシを通過するデータは実際には圧縮されず、ngnix は送信が完了する前に接続を閉じます。

ログから判断すると、Tomcat には実際に多数の org.apache.catalina.connector.ClientAbortExceptions があり、これらは ERRO_CONTENT_LENGTH_MISMATCH を持つ以前のリクエストと一致します。

nginx gzip の構成を学習し始めます (別のメモを作成する準備中)

問題は解決していないので、先に寝てから作業を続けてください目が覚めたら

目が覚めたけど、まだ何も分からなかったので素直にログを確認しました

/var/log/nginx/error.log

ああ、問題はここです:

2015/05/30 00:11:53 [crit] 8808#0: *60 open() "/var/cache/nginx/proxy_temp/2/01/0000000012" failed (13: Permission denied) while reading upstream, client:...
proxy_temp ディレクトリ、所有者は root、rwx 権限、他のユーザーには権限がありません。
nginx は許可なしで nginx ユーザーとして実行されます、ドーン!


解決策:

1. root として nginx を実行します

2. proxy_temp ディレクトリの所有者を nginx に設定します。

3. proxy_temp ディレクトリのグループを nginx に追加し、rwx 権限を付与します

4. キャッシュを無効にします

root を使用して nginx を実行したくないので、方法 3 を選択しました。まずはシステムを動作させてください

残りの質問:

1. そもそも、なぜ proxy_temp ディレクトリの所有者が root なのでしょうか?ルートにする必要がありますか?

2. 方法 3 を選択すると、同じファイルに対して複数のキャッシュが生成されることがわかりました。これはなぜ発生するのでしょうか。

3. この場合、キャッシュは必要ですか?キャッシュを無効にするほうが合理的な選択ですか

>5-05-30

上記では、Nginx 経由でバックエンド アプリケーションにアクセスし、ERR_CONTENT_LENGTH_MISMATCH 問題を解決する方法を紹介しました。内容も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。