org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header" から一定期間、tomcat が起動しない ...
いろいろと試してみましたが、解決には至らないようですが、勉強になったので記録しておきます。
例外の詳細
1. まず、最も目につくのは、最初に追加した maxHttpHeaderSize="8192" というように設定する必要があります。
<Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="8192" connectionTimeout="20000& quot; maxThreads="150" maxSpareThreads="75" redirectPort="8443" />
しかし、tomcatの設定記述を確認したところ https://tomcat.apache.org/tomcat-8.5-doc/config/http.html maxHttpHeaderSize="81920" に設定しただけですが、問題はまだ解決していないようで、同じ例外がまだ発生します。
しかし、この2つの設定: maxSpareThreads="75" は、tomcat を起動するときに次のような警告を表示します。
10-Sep-2019 11:38:15.659 warning [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/ Connector} Setting property 'maxSpareThreads' to '75' did not find a matching property.
2は、また、不正な文字の理由に設計を言う方法があります、翻訳されたHTTPリクエストヘッダを解析するエラーは、よくリクエストヘッダーエラーです
以下の参考文献をご覧ください。 https://www.jianshu.com/p/83735dc80603?spm=a2c6h.13066369.0.0.44c05da9lfSEG7
まず最初に: tomcatのバージョンを下げることは推奨されません。耳を塞ぐことに等しく、間違いなく損失はありません。
Tomcatはバージョン7.0.73, 8.0.39, 8.5.7以降、httpの解析に大きな制限を受けています。
RFC3986の文書では、要求されたUrlは英字(a-zA-Z)、数字(0-9)、-_. ~4の特殊文字、およびすべての予約文字です。
解決方法 conf/catalina.propertiesの末尾に2行追加してください。
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
<イグ
残念ながら
requestTargetAllow
は|{}しか設定できず、それ以外(例えば " < > [ \ ] ^ ` { } ...)はリクエストが遮断されたままなので、|{}以外の文字が使われた場合はどうすればいいのか?となると、やはり以下のような設定が必要です。
relaxedPathChars="[\]^`{|}" relaxedQueryChars="[\]^`{|}"
<イグ
ただ、このメモを追加した後、起動時に以下のような警告が出るのですが、今のところ理由はわかりませんし、私のURLにはこれらの特殊記号は入っていないので、削除しただけですので、もし入っていたら試してみてください。
10-Sep-2019 11:38:15.663 warning [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/ Connector} Setting property 'relaxedPathChars' to '[\]^`{|}' did not find a matching property.
10-Sep-2019 11:38:15.663 Warning [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/ Connector} Setting property 'relaxedQueryChars' to '[\]^`{|}' did not find a matching property.
3. httpsの問題だからhttpに変えれば大丈夫という魔法のような解決策がある。
4. 接続プロトコルを変更する
4.1 HTTP1.1 を org.apache.coyote.http11.Http11NioProtocol に変更すると、tomcat 起動時に "address used" というエラーが大量に発生して、わかりにくいが頭が痛くなる
Linuxのビューイングポートについては、こちらで少しご紹介しています。 Linuxでポートの占有を見るには lsof と ネットスタット コマンド .
(1) lsofの使用法。
lsof -i:port number
<イグ
(2) netstatの使用状況。
netstat -tunlp | grep port number
netstatコマンドの個々のパラメータについて、以下に説明します。
-a: ソケットプログラムを含む、すべてのネットワーク状態を一覧表示します。
-c seconds: ネットワークの状態を数秒ごとに更新するように指定します。
-n:ドメイン名やサービス名ではなく、IPアドレスとポート番号で表示します。
-p: PID とプログラム名を表示します。
-t:TCPプロトコルポートを使用した接続の状態を表示します。
-u: UDP プロトコルポートを使用した接続のステータスを表示します。
-I: リスニング状態の接続のみを表示します。
-r: ルーティングテーブルを表示します。
これは、現在のサーバー上のすべてのポートとプロセスサービスを表示し、特定のポートおよびサービスの状態を見るためにgrepと組み合わせることができます - 。
(3) プロセスの停止
kill -9 PID
4.2 HTTP1.1 を protocol="org.apache.coyote.http11.Http11Protocol" に変更し、起動時にこの書き込みは古いので、以前のプロトコルを使用するようにとのプロンプトが表示されるようにしました。
10-Sep-2019 14:55:12.963 warning [main] org.apache.coyote.http11.Http11Protocol.<init> The HTTP BIO connector has been removed in Tomcat 8.5.x The HTTP BIO connector configuration has been automatically switched to use the HTTP NIO connector instead.
5. tomcat の server.xml で、リスナーを削除してください。
赤で示したものをコメントアウトして、プロジェクトを再起動します(実験していません)
<スパン 6. tomcatのバージョンを下げる。バージョン7.0.73, 8.0.39, 8.5.7以降、httpヘッダーの検証を追加したためです。
2019年9月16日追記:この例外を除いてバージョン変更から1週間近く経っています。
2019年9月24日追記:すべて順調です、この方法はうまくいきます
関連
-
Java Exceptionが発生しました エラー解決
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Dateが型に解決できない問題を解決する
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
java.utilのjavaSE Error。
-
com.mongodb.MongoSocketOpenException: ソケットを開くときに例外が発生します。
-
Maven の例外:アーティファクト xxxx:pom が見つかりませんでした。
-
idea Mavenの例外。アーティファクトが見つからない (ネット上の多くの回答は役に立たないか簡潔すぎるため、解決策を見つけるのに長い時間がかかる)
-
HttpClient リクエスト DefaultHttpClient 時代遅れの代替品
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
Easyui Resource が Document と解釈され、MIME タイプが application/json で転送された場合について。
-
IDEAがGitHubに接続し、認証情報が正しくない401、インバリダの認証データの問題を解決する。
-
Swagger の @ApiModelProperty オブジェクト フィールドが表示されない
-
Spring MVC アノテーションエラーです。引数型[java.lang.String]の名前が利用できません。
-
は、タイプ 'org.hibernate.SessionFactory' のビーンが必要ですが、見つかりませんでした。
-
Jgitでのgit操作時に発生する問題点
-
Javaで考える読書ノート
-
NoClassDefFoundErrorの処理(xmlreadersクラスを初期化できないピットに遭遇した)