一見、まだ問題が解決されない、様々な方法を試してみましたが、また何か、記録ノートを学びました。
異常の詳細:
図1は、第一そのほとんどがのserver.xmlコネクタに追加された参照maxHttpHeaderSize =「8192」、このようなセット。
< コネクタポート= "8080" プロトコル= "HTTP / 1.1" maxHttpHeaderSize = "8192" のConnectionTimeout = "20000" maxThreadsの= "150" MaxSpareThreadsの取る= "75" にredirectPort = "8443" />
しかし、私は、導入されたTomcatの設定にチェックhttps://tomcat.apache.org/tomcat-8.5-doc/config/http.htmlを このプロパティがデフォルト8192(8キロバイト)で、私は単にmaxHttpHeaderSize =「81920」を設定しますしかし、一見、まだ問題が解決しない、同じ例外がまだそこにあります
しかし、これらの2つの設定は:MaxSpareThreadsの取る=「75」私はTomcatを起動し、次の警告を持っていますが、私は、Tomcatでの設定ファイルにこのプロパティを見つけることができませんでしたので、私は良い感じか設定されていません
10をSep-2019 11:38:15.659警告[メイン] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule] '75' に{サーバー/サービス/コネクタ}設定プロパティ 'MaxSpareThreadsの取る' が整合性を見つけられませんでした。
maxHttpHeaderSizeに設定し、比較的大きな強力な神が存在し、いずれにせよ、ソースコードを変更し、試すことができます理解することができ、私はこの小さなルーキーは無力表してい
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リクエストが文字のみ(-ZA-Z)、数字(0-9)、-_。1-4および特殊文字のすべての予約文字が含まれている、指定します。
ソリューション:confには/ catalina.propertiesは、最後の2行を追加します。
tomcat.util.http.parser.HttpParser.requestTargetAllow = | {}
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH =真
残念ながら、 requestTargetAllow
唯一の構成は|、{、}これらの3つの文字は、(<> [\] ^ `」として他人のために、できるように {|}。)、 あなたが使用している場合、要求の時点では、まだ、傍受| {}をそれを行う方法以外の他の文字?それはまた、以下の設定が必要です。
relaxedPathChars = "[\] ^` {|}" relaxedQueryChars = "[\] ^ `{|}"
次の警告が開始されます。しかし、私はこのノートを追加した後、彼らはどのような理由を知りませんでしたが、私のURLは、これらの特殊記号を持っていない、単にそれを削除し、これらの特殊記号があるかどうかを試すことができます。
10 - 9月- 2019年11:38:15.663警告[メイン] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule] {サーバ/サービス/コネクタ}設定プロパティ'relaxedPathChars'から「[\] ^ `{|} 「整合性を見つけることができませんでした。
10 - 9月- 2019年11:38:15.663警告[メイン] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule] {サーバ/サービス/コネクタ}設定プロパティ'relaxedQueryChars'から「[\] ^ `{|} 「整合性を見つけることができませんでした。
図3は、魔法の解決策があり、問題はこれが事実であるならば、あなたは試すことができます。httpsは、http十分に変更され、私は、HTTPを使用していたので、この方法を試していないと言います
図4に示すように、接続許可書を変更します
4.1 HTTP1.1 「使用するアドレス」多くのミスがあったときorg.apache.coyote.http11.Http11NioProtocolは、結果が理解し、中規模および大規模な頭なしで、Tomcatを開始します
知識のほとんどないのLinuxポートを学ぶためにここに確認してください:Linuxが使用できるポート占有表示 のlsof と は、netstat コマンドを。
(1)使用のlsof。
lsofは-i:ポート番号
(2)netstatの使用法:
netstatの-tunlp | grepのポート番号
次のようにnetstatの様々なパラメータをコマンド:
-a:ソケットプログラムを含むリストのすべてのネットワーク状態、;
-c秒:状態をリフレッシュするために数秒ごとにネットワークを指定します。
-n:使用のIPアドレスとポート番号をサービス名とドメイン名を使用していない、表示されます。
-p:ディスプレイPIDとプログラム名;
-t:TCPプロトコルのステータスを使用してディスプレイポート接続。
-u:ディスプレイポートの接続状態を使用するUDPプロトコル;
-I:接続ステータスモニターを表示します。
-r:ルーティングテーブルを表示します。
あなたは現在を表示することができます特定のポートとサービスの例を表示するためにはgrepと連動して、サーバー上のすべてのポートやサービスプロセス、・
(3)プロセスを殺します
殺す-9 PIDを
4.2 HTTP1.1は、上のプロトコルを利用して、あなたが起動したときに、この文言を示唆することは廃止され、=「org.apache.coyote.http11.Http11Protocol」プロトコルを変更しました
10をSep-2019 14:55:12.963警告[メイン] org.apache.coyote.http11.Http11Protocol。< 初期化> HTTP BIOコネクターは以降のTomcat 8.5で削除されました。HTTP BIOコネクタ構成は、自動的にHTTPではなくNIOコネクターを使用するように切り替えられています。