web-dev-qa-db-ja.com

なぜ400のBad Requestが出るのですか?

AWS ECSでのサーバーのセットアップが完了しました。

Apacheのバージョン(2.2から2.4)とPHPバージョン(5.3から5.6))を除いて、すべての構成は私が持っている別のサーバーと同じです。

Php_info()のみを出力するようにindex.phpファイルを変更しましたが、次のようになります。

要求の形式が正しくありません

お使いのブラウザが、このサーバーが理解できないリクエストを送信しました。さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、400 Bad Requestエラーが発生しました。

Apache/2.4.25(Amazon)サーバー、xxx.yyy.comポート80

私は自分のアクセスから保存されたすべてのログを見てきましたが、これはこの特定のアクセスから得られるものです。

error_log

[Tue Jan 24 16:20:46.154208 2017] [suexec:notice] [pid 32139] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Tue Jan 24 16:20:46.249527 2017] [auth_digest:notice] [pid 32146] AH01757: generating secret for digest authentication ... 
[Tue Jan 24 16:20:46.250415 2017] [lbmethod_heartbeat:notice] [pid 32146] AH02282: No slotmem from mod_heartmonitor 
[Tue Jan 24 16:20:46.276823 2017] [mpm_prefork:notice] [pid 32146] AH00163: Apache/2.4.25 (Amazon) OpenSSL/1.0.1k-fips configured -- resuming normal operations 
[Tue Jan 24 16:20:46.276840 2017] [core:notice] [pid 32146] AH00094: Command line: '/usr/sbin/httpd'

access_log

90.152.127.182 - - [24/Jan/2017:16:21:03 +0000] "GET / HTTP/1.1" 400 437 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" 
90.152.127.182 - - [24/Jan/2017:16:21:04 +0000] "GET /favicon.ico HTTP/1.1" 400 437 "http://xxx.yyy.com/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

ssl_access_log

90.152.127.182 - - [24/Jan/2017:16:12:24 +0000] "GET / HTTP/1.1" 400 434 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" 
90.152.127.182 - - [24/Jan/2017:16:12:25 +0000] "GET /favicon.ico HTTP/1.1" 400 434 "https://xxx.yyy.com/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

400ステータスの原因は何ですか?質問する前に、私はmod_sslをインストールしました。

8
Sérgio Paulino

仮想ホストのServerNameに不正な文字が含まれていないことを確認してください。

「sub_domain.test.com」をApache 2.2から2.4に移行しているときにこの問題に遭遇しました。

「sub_domain」のunderscoreにより、Apache 2.4は400 (Bad Request)で応答しましたが、エラーログにそれ以上のヒントはありませんでした。

https://stackoverflow.com/questions/2180465/can-domain-name-subdomains-have-an-underscore-in-it もご覧ください。

17
Chris78

同じ問題が発生しています。含まれているこの修正を疑っています。CVE-2016-8743RFC7230に対応するHTTP要求文法を要求行と要求ヘッダーに適用し、悪意のあるクライアントまたはダウンストリームプロキシによる応答の分割とキャッシュ汚染を防止します。

3
user7400387