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

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

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

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

324閲覧

AWS環境にてリバースプロキシサーバを構築して、パスによって別サーバに振り分けしたい

sabaka

総合スコア3

Apache

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2024/05/13 13:30

実現したいこと

AWS環境にて、A,Bの2アカウントにwebサーバが1台ずつあります。(計2台)
AアカウントにApacheにてリバースプロキシサーバを構築し、そこから
ドメイン「www.abc.jp」の場合はAアカウントのwebサーバaに、「www.abc.jp/zxy」の場合はBアカウントのwebサーバbに振り分けしたいです。

webサーバaのIP:XXX.XXX.XXX.XXX
webサーバbのIP:YYY.YYY.YYY.YYY

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

AアカウントにApacheにてリバースプロキシサーバを構築後、/etc/httpd/conf/httpd.confに追記(該当のソースコード)したところ、パスに「www.abc.jp」と打つとwebサーバaにはアクセスできましたが、「www.abc.jp/zxy」の場合は以下のエラーが出てアクセスできませんでした。

エラーメッセージ Proxy Error The proxy server could not handle the request Reason: DNS lookup failure for: XXX.XXX.XXX.XXXzxy

該当のソースコード(追記したもの)

LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so NameVirtualHost * ProxyRequests Off ProxyPreserveHost On <VirtualHost *:*> ServerName www.abc.jp ProxyPass / http://XXX.XXX.XXX.XXX </VirtualHost> <VirtualHost *:*> ServerName www.abc.jp ProxyPass /zxy http://YYY.YYY.YYY.YYY </VirtualHost> ※他は触っていません。

試したこと

・各ProxyPassの下にProxyPassReverseを追記、内容はProxyPassと同様 
→表示、エラー内容とも変化なし
・NameVirtualHost * をコメントアウト
→表示、エラー内容とも変化なし
・ProxyPreserveHost On をコメントアウト
→表示、エラー内容とも変化なし

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

参考にしたHP
https://dayflower.hatenablog.com/entry/20081114/1226649195
https://httpd.apache.org/docs/2.2/mod/mod_proxy.html

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

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

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

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

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

sabaka

2024/05/13 23:29 編集

ちなみに、該当のソースコード(追記したもの)の<VirtualHost *:*>の2箇所を以下に変更すると <VirtualHost *:*> ServerName www.abc.jp ProxyPass /zxy http://XXX.XXX.XXX.XXX </VirtualHost> <VirtualHost *:*> ServerName any ProxyPass / http://YYY.YYY.YYY.YYY </VirtualHost> www.abc.jp の場合はこのリバースプロキシのindex.htmlが表示され、 www.abc.jp/zxy の場合はwebサーバaが表示されました…
sabaka

2024/05/14 00:20 編集

また、該当のソースコード(追記したもの)の<VirtualHost *:*>の下段のProxyPassの「/」にサブディレクトリを追加した場合 <VirtualHost *:*> ServerName www.abc.jp ProxyPass /zxy http://XXX.XXX.XXX.XXX </VirtualHost> <VirtualHost *:*> ServerName www.abc.jp ProxyPass /abc http://YYY.YYY.YYY.YYY </VirtualHost> www.abc.jp/zxy でwebサーバaに、 www.abc.jp/abc でwebサーバbに、繋がりますが、 www.abc.jpのみでwebサーバaにつなげたいため解決にはなりませんでした。(もともとのパスが変わってしまう。) ちなみにこの設定でwww.abc.jpに接続すると、リバースプロキシサーバindex.htmlが表示されました。
yu_1985

2024/05/14 05:04

これはAアカウントのWEBサーバa内のApacheで振り分けるのではなく、リバースプロキシサーバを別途作成してa,bに振り分けたい、ということでいいですか?
guest

回答1

0

ベストアンサー

/etc/apache2/sites-enabled/000-default-le-ssl.conf の当該部分の最後に / を付け加えてみてください。

微妙に違う気がしますが、症状は似ているので、試してみてはいかがですか。


あぁ、リバースプロキシしたパスの更にサブディレクトリで別のホストへリバースプロキシしているんですね。
見落としてました。
とりあえず、上記の対処はした方がいいと思いますが、その上で。
ちょっと自分でも試してみました。

VirtualHostの設定が2つに分かれていますが、これは意味がありますか?
一つにまとめた方がいいです。

そのうえで、

<VirtualHost *:*> ServerName www.example.jp ProxyPass /zxy http://YYY.YYY.YYY.YYY/ ProxyPassReverse /zxy http://YYY.YYY.YYY.YYY/ ProxyPass / http://XXX.XXX.XXX.XXX/ ProxyPassReverse / http://XXX.XXX.XXX.XXX/ </VirtualHost>

というように、サブディレクトリの設定を先に記述してください。
(どうやら、先にマッチした設定が反映されるようです)

もしくは、

<VirtualHost *:*> ServerName www.example.jp ProxyPass / http://XXX.XXX.XXX.XXX/ ProxyPassReverse / http://XXX.XXX.XXX.XXX/ <Location /zxy> ProxyPass http://YYY.YYY.YYY.YYY/ ProxyPassReverse http://YYY.YYY.YYY.YYY/ </Location> </VirtualHost>

というように、Locationディレクティブを使って設定してもいいようです。
(その場合には、最初のパス指定は要らないです)

投稿2024/05/13 22:25

編集2024/05/15 02:03
katsuko

総合スコア3531

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

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

sabaka

2024/05/13 23:53

回答ありがとうございます。試してみましたが解決できませんでした。 ・ProxyPass / http://XXX.XXX.XXX.XXX の最後に「/」をつけた場合  www.abc.jp/zyxだとwebサーバaの「nginx error! The page you are looking for is not found.」となりました。 ・ProxyPass /zxy http://YYY.YYY.YYY.YYY の最後に「/」をつけた場合  www.abc.jp/zyxだと Proxy Error となりました。 念のため、ServerNameの最後にもつけてみましたが、Proxy Errorは変わらなかったです。 この場合どの辺りに原因がありそうでしょうか?
sabaka

2024/05/15 03:15

回答ありがとうございます。 1つ目に記載いただいたものを試したところ問題が解決しました! 順番が大切だったのですね。。。 ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問