質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

2004閲覧

Apache ProxyPassReverseがうまく動作しないようです。どうかお助け下さい。

youko

総合スコア17

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

1クリップ

投稿2017/10/03 11:13

編集2017/10/04 04:32

###前提・実現したいこと

新環境にサーバの引越しを行っています。
旧環境では動作しているモジュールが新環境で動きません。

http://www.hoge-global.com/sub/contact/products/
前任者が作成したFuelPHP製のフォームにアクセスすると404 Bad Requestになります。

ApacheのAliasとProxyPassReverseが効いていないのかと考えていますが、
ApacheのProxy系には不勉強でどうすれば良いか途方にくれています。

ローカルでも検証しましたがFuelPHPに関係なく駄目なようです。
宜しくお願い致します。

ローカル環境の検証状況を張ります。

###発生している問題・エラーメッセージ

正常表示

# 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 [text/html] `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/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。

400エラーが発生します。

# 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 [text/html] `index.html.1' に保存中 100%[===================================================================================================>] 59 --.-K/s 時間 0s 2017-10-04 19:46:00 (31.4 MB/s) - `index.html.1' へ保存完了 [59/59]

400エラー

# 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。

400エラー

# 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。

###該当のソースコード

何か設定が足りない気がします...。

まずはWindowsのhostsに設定

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

次にサーバのhostsに設定

# 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
# mkdir -p /home/web/hoge-global/public # mkdir -p /home/web/hoge-global/app/public # mkdir -p /home/web/hoge_sub/app/public # mkdir -p /home/web/hoge-global/app/public/contact/products/ # 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 [text/html] `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 [text/html] `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 [text/html] `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。

400エラーが発生します。

# 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。

400エラーが発生します。

# 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。

400エラーが発生します。

###試したこと

  • Apache(2.2.15)とPHP(5.4)のバージョンを合わせています
  • 旧環境のApacheコンフィグ, WEBファイルをパスを合わせてそのまま再現

mod_proxyはインストールされている模様です。

# grep -e mod_proxy.so -e mod_proxy_ajp.so /etc/httpd/conf/* /etc/httpd/conf/httpd.conf:LoadModule proxy_module modules/mod_proxy.so /etc/httpd/conf/httpd.conf:LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
# apachectl -M rewrite_module (shared) proxy_module (shared) proxy_balancer_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_ajp_module (shared) proxy_connect_module (shared)

###補足情報(言語/FW/ツール等のバージョンなど)

  • Apache 2.2.15)
  • PHP 5.4.45

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

http://hoge_sub.fuel.local に直接アクセスして 400: Bad Request なのであれば、ProxyPass, ProxyPassReverse とは関係ないです。

suyama さんもご指摘の、以下に該当するものと思います。

ServerNameに"_"が含まれているとBad Requestになるという事例は聞きます。

ServerName 設定というよりも、リクエストの Host: ヘッダに「_」が含まれていることが原因です。

ServerName に「_」を含まないものに変更するか、HttpProtocolOptionsStrict(default)→Unsafe を設定するといいと思います。

<VirtualHost *:80> DocumentRoot /home/web/hoge_sub/app/public ServerName "hoge_sub.fuel.local" HttpProtocolOptions Unsafe LenientMethods Allow0.9 (略) </VirtualHost>

投稿2017/10/04 16:45

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

youko

2017/10/05 00:25

TaichiYanagiya様 ご返信有難う御座います。 >HttpProtocolOptions で Strict(default)→Unsafe を設定するといいと思います。 こちらで解決致しました、 誠に有難う御座います。 現在システムが稼動してリリース出来ました! 感謝です。
guest

0

vhosts.confの記載はこれですべてでしょうか。
<VirtualHost *:443>に対応する</VirtualHost>がないようです。

下記コマンドでは「Syntax OK」となるでしょうか。

apachectl configtest

また、提示された設定からは"/contact/customer"へはHTTPSでのアクセスのみとなるように思います。

投稿2017/10/03 11:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

youko

2017/10/03 11:32

suyama様 ご返信誠に有難う御座います! 一人で悩んでいるので大変ありがたいです。 アドバイス頂いた、追加情報を載せます。 # apachectl configtest Syntax OK 失礼致しました。 80番の設定もあります。 # wget http://www.hoge-front.com --2017-10-03 20:28:37-- http://www.hoge-front.com/ Resolving www.hoge-front.com... 127.0.0.1 Connecting to www.hoge-front.com|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://www.hoge-front.com/ [following] --2017-10-03 20:28:37-- https://www.hoge-front.com/ Connecting to www.hoge-front.com|127.0.0.1|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: “index.html” [ <=> ] 24,720 --.-K/s in 0.1s 2017-10-03 20:28:39 (186 KB/s) - “index.html” saved [24720] 正常動作しています。
退会済みユーザー

退会済みユーザー

2017/10/03 11:37

設定は問題ないということですね。 あとは、ProxyPassやProxyPassReverseの記載が違うように思いました。 下記のようになるのではないかと思うのですが、元のコンフィグでも同様なのでしょうか。 <Location "/contact/customer"> ProxyPass /contact/customer http://hoge-global.fuel.local/contact/customer ProxyPassReverse /contact/customer http://hoge-front.fuel.local/contact/customer </Location>
退会済みユーザー

退会済みユーザー

2017/10/03 11:42

失礼しました。 Locationでは書き方が違うのですね。
youko

2017/10/03 12:07

suyama様 直接参照する場合も、400が出てしまいます。 # wget http://hoge.fuel.local/contact/customer --2017-10-03 21:04:17-- http://hoge_fr.fuel.local/contact/customer Resolving hoge.fuel.local... 127.0.0.1 Connecting to hoge.fuel.local|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 400 Bad Request 2017-10-03 21:04:17 ERROR 400: Bad Request # wget http://hoge.fuel.local --2017-10-03 21:03:39-- http://hoge.fuel.local/ Resolving hoge.fuel.local... 127.0.0.1 Connecting to hoge.fuel.local|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 400 Bad Request 2017-10-03 21:03:39 ERROR 400: Bad Request. 有難う御座います。 何でいけないのか。
退会済みユーザー

退会済みユーザー

2017/10/03 12:24

Bad Requestが出る原因としては、不正なリクエストによるものですが、wgetで取得しているのであれば問題ないように思います。 ServerNameに"_"が含まれているとBad Requestになるという事例は聞きます。 また、mod_rewriteでループが発生していてもBad Requestと表示されるかと思います。
youko

2017/10/03 14:06

suyama様 すごく丁寧なアドバイス誠に有難う御座います。 拝承致しました。 試しましたが、上手くいかず、 旧環境ではドメイン等そのままで動いているので何ともです。 有難う御座います。 引き続き明日も確認致します。 また自己解決した場合も詳細にフィードバック致します。 本当に有難う御座います。
youko

2017/10/05 00:27

>suyama様 >ServerNameに"_"が含まれているとBad Requestになるという事例は聞きます。 こちらでした。 アドバイスを実行できておらずすみません。 ご尽力誠に有難う御座います。 感謝しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問