Linux

Apache2.2系 400 Bad Request _のあるホスト設定でのエラー回避

 

サーバのリプレイ系案件。

ProxyPassReverseでローカル定義先のアプリに400エラーで到達出来なかった。

コンフィグ、バージョンを合わせたのに動かない。

 

そして旧環境ではなぜか動いていて何がいけないのかわからなかった(現在も不明)、協力を得て期日にリリース対応できました。

 

解決策

  1. _のあるホスト(ドメイン)を使わない。そもそもRFC違反
  2. ApacheのHttpProtocolOptions unsafeオプションを設定して、力技で回避する。

 

今回は2で解決した。

 

環境

  • CentOS 6.8
  • Apache 2.2.15

 

# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 hoge-global.fuel.local hoge_sub.fuel.local
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.11.27 www.hoge-global.com hoge-global.com

 

# vi /etc/httpd/conf/httpd.conf


ServerName localhost:80



DirectoryIndex index.html index.html.var

↓変更

DirectoryIndex index.php index.html index.html.var

 

 

 

# mkdir -p /home/web/hoge-global/public

# mkdir -p /home/web/hoge-global/app/public

# mkdir -p /home/web/hoge-global/app/public/contact/products/

# mkdir -p /home/web/hoge_sub/app/public

# mkdir -p /home/web/hoge_sub/app/public/contact/products/

 

# vi /home/web/hoge-global/public/index.php

<?php
echo __FILE__;




# vi /home/web/hoge-global/app/public/index.php

<?php
echo __FILE__;





# vi /home/web/hoge-global/app/public/contact/products/index.php

<?php
echo __FILE__;





# vi /home/web/hoge_sub/app/public/index.php

<?php
echo __FILE__;



# vi /home/web/hoge_sub/app/public/contact/products/index.php

<?php
echo __FILE__;

 

 

# vi /etc/httpd/conf.d/hoge-global.com.conf



NameVirtualHost *:80



<VirtualHost *:80>
  DocumentRoot /home/web/hoge-global/public
  ServerName www.hoge-global.com
  ServerAlias hoge-global.com
  ErrorLog logs/hoge-global-error.log
  CustomLog logs/hoge-global-access.log common

  <Location "/contact/products">
      ProxyPass http://hoge-global.fuel.local/contact/products
      ProxyPassReverse http://hoge-global.fuel.local/contact/products
  </Location>


  <Location "/sub/contact/products">
      ProxyPass http://hoge_sub.fuel.local/contact/products
      ProxyPassReverse http://hoge_sub.fuel.local/contact/products
  </Location>


  <Directory "/home/web/hoge-global">
    AllowOverride All
    Order allow,deny
    Allow from all

    # Apache2.4対応の為変更
    #Require all granted
  </Directory>

  Alias /sub /home/web/hoge_sub/public

  <Directory "/home/web/hoge_sub">
    AllowOverride All
    Order allow,deny
    Allow from all
    # Apache2.4対応の為変更
    #Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /home/web/hoge-global/app/public
  ServerName hoge-global.fuel.local
  ErrorLog logs/hoge-global-error.log
  CustomLog logs/hoge-global-access.log common
  <Directory "/home/web/hoge-global/app/public">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>


<VirtualHost *:80>
  DocumentRoot /home/web/hoge_sub/app/public
  ServerName hoge_sub.fuel.local
  ErrorLog logs/hoge_sub-error.log
  CustomLog logs/hoge_sub-access.log common
  <Directory "/home/web/hoge_sub/app/public">
    AllowOverride All
    Order allow,deny
    Allow from all
    # Apache2.4対応の為変更
    #Require all granted
  </Directory>
</VirtualHost>

 

 

# httpd -t

# service httpd restart

httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

 

# wget http://www.hoge-global.com
--2017-10-04 19:41:07--  http://www.hoge-global.com/
www.hoge-global.com をDNSに問いあわせています... 192.168.11.27
www.hoge-global.com|192.168.11.27|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 38 
`index.html' に保存中

100%[===================================================================================================>] 38          --.-K/s 時間 0s

2017-10-04 19:41:07 (16.0 MB/s) - `index.html' へ保存完了 [38/38]





# wget http://www.hoge-global.com/contact/products/

--2017-10-04 19:46:00--  http://www.hoge-global.com/contact/products/
www.hoge-global.com をDNSに問いあわせています... 192.168.11.27
www.hoge-global.com|192.168.11.27|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 59 
`index.html.1' に保存中

100%[===================================================================================================>] 59          --.-K/s 時間 0s

2017-10-04 19:46:00 (31.4 MB/s) - `index.html.1' へ保存完了 [59/59]






# wget http://hoge-global.fuel.local
--2017-10-04 19:46:12--  http://hoge-global.fuel.local/
hoge-global.fuel.local をDNSに問いあわせています... 127.0.0.1
hoge-global.fuel.local|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 42 
`index.html.2' に保存中

100%[===================================================================================================>] 42          --.-K/s 時間 0s

2017-10-04 19:46:12 (21.9 MB/s) - `index.html.2' へ保存完了 [42/42]

 

 

# wget http://www.hoge-global.com/sub/contact/products/

--2017-10-04 20:08:29--  http://www.hoge-global.com/sub/contact/products/
www.hoge-global.com をDNSに問いあわせています... 192.168.11.27
www.hoge-global.com|192.168.11.27|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 400 Bad Request
2017-10-04 20:08:29 エラー 400: Bad Request。








# wget http://hoge_sub.fuel.local

--2017-10-04 19:46:28--  http://hoge_sub.fuel.local/
hoge_sub.fuel.local をDNSに問いあわせています... 127.0.0.1
hoge_sub.fuel.local|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 400 Bad Request
2017-10-04 19:46:28 エラー 400: Bad Request。




# wget http://hoge_sub.fuel.local/contact/products/

--2017-10-04 19:46:38--  http://hoge_sub.fuel.local/contact/products/
hoge_sub.fuel.local をDNSに問いあわせています... 127.0.0.1
hoge_sub.fuel.local|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 400 Bad Request
2017-10-04 19:46:38 エラー 400: Bad Request。

 

 

解決策

# vi /etc/httpd/conf.d/unsafe.conf

HttpProtocolOptions unsafe

 

 

# httpd -t
Syntax OK

# service httpd restart

 

# wget http://www.hoge-global.com/sub/contact/products/

--2017-10-08 03:46:15--  http://www.hoge-global.com/sub/contact/products/
www.hoge-global.com をDNSに問いあわせています... 192.168.11.27
www.hoge-global.com|192.168.11.27|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 56 
`index.html.1' に保存中

100%[=================================================================================================================================>] 56          --.-K/s 時間 0s

2017-10-08 03:46:15 (26.0 MB/s) - `index.html.1' へ保存完了 [56/56]




# wget http://hoge_sub.fuel.local/
--2017-10-08 03:46:45--  http://hoge_sub.fuel.local/
hoge_sub.fuel.local をDNSに問いあわせています... 127.0.0.1
hoge_sub.fuel.local|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 39 
`index.html.3' に保存中

100%[=================================================================================================================================>] 39          --.-K/s 時間 0s

2017-10-08 03:46:45 (17.4 MB/s) - `index.html.3' へ保存完了 [39/39]




# wget http://hoge_sub.fuel.local/contact/products/

--2017-10-08 03:46:27--  http://hoge_sub.fuel.local/contact/products/
hoge_sub.fuel.local をDNSに問いあわせています... 127.0.0.1
hoge_sub.fuel.local|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 56 
`index.html.2' に保存中

100%[=================================================================================================================================>] 56          --.-K/s 時間 0s

2017-10-08 03:46:27 (27.0 MB/s) - `index.html.2' へ保存完了 [56/56]

到達した。

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)