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

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

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

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

Q&A

2回答

739閲覧

Apache VirtualHost同士でローカルで通信するには

mkz2020

総合スコア4

Apache

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

0グッド

3クリップ

投稿2021/07/08 06:34

編集2021/07/09 05:31

CentOS7, Apache2.4で名前ベースのVirtualHostを設定しました。
以下の構成になっています。

VirtualHost1: ウェブサイト(https://example1.com)
VirtualHost2: APIサーバー(https://example2.com)

現在、VirtualHost1(https://example1.com)から外に出て(インターネット経由して)VirtualHost2(https://example2.com)に接続してデータを取得しているのですが、
これを、VirtualHost1とVirtualHost2同士でローカル通信するにはどのようにしたらよいのでしょうか?
できれば、VirtualHost2(APIサーバー)は公開したくありません。

イメージ説明

イメージ説明

現在のhttpd.confは以下のようになっています。

shell

1# -- httpd.conf -- 2#VirtualHost1 3<VirtualHost *:443> 4 DocumentRoot /var/www/html/example1 5 ServerName example1.com 6 # ・・・・・・・・・・・・・・・・・・・ 7 # ・・・・・・・・・・・・・・・・・・・ 8</VirtualHost> 9 10#VirtualHost2 11<VirtualHost *:443> 12 DocumentRoot /var/www/html/example2 13 ServerName example2.com 14 # ・・・・・・・・・・・・・・・・・・・ 15 # ・・・・・・・・・・・・・・・・・・・ 16</VirtualHost>

example2.comは破棄して、VitualHost1、2の間はHTTP通信にしてもよいです。

よろしくお願いいたします。

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

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

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

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

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

showkit

2021/07/08 07:38

「VirtualHost2」にローカルアドレスを設定して、「VirtualHost1」のサーバの hosts にそのローカルアドレスを記述して、通信させるのはまずいのですか?
mkz2020

2021/07/08 09:26

VirtualHost1はインターネット公開されていて、JavaScriptから https://example2.com/products/?id=1234 というようにVirtualHost2に問い合わせます。この場合、URLはどのようになるのでしょうか? PHPやPythonで問い合わせるようにすればよいでしょうか。
otn

2021/07/08 11:06

普通にVirtualHost2のURLを指定してアクセスすれば良いと思いますが、質問すると言うことは、エラーなど期待通りでない結果になったと言うことだと思いますが、何をしてどうなったのでしょうか?
mkz2020

2021/07/09 04:22

説明不足だったため画像を追加しました。VirtualHost設定をどうのようにすればVirtualHost1、2の間で転送できるのかよく分かっていません。
showkit

2021/07/09 04:36

VirtualHost設定 というのですから httpd.conf もしくは それが インクルードしているファイルで NameVirtualHost なり <VirtualHost *:80> なり <VirtualHost *:443> なりしているのですよね? 公開したくない箇所は 伏字で構わないので そこを 記述してください。
otn

2021/07/09 04:52

状況がわかりません。 通信できていないのですか?どんなエラー(状況)ですか?
mkz2020

2021/07/09 05:00

現状は問題なく通信できています。VirtualHost2を非公開にする方法がないか考えています。httpd.confについても追加してみます。
otn

2021/07/09 05:15

通信できているのに、 > VirtualHost1とVirtualHost2同士でローカル通信するにはどのようにしたらよいのでしょうか? という質問をしているのですか??? > VirtualHost2を非公開にする方法がないか考えています。 アクセス元IPアドレスで制限すれば良いのでは?
guest

回答2

0

VirtualHost2(APIサーバー)は、誰がアクセスする(どこからアクセスする)のでしょうか?

  1. Web ブラウザで実行する JavaScript
  2. VirtualHost1(ウェブサイト)のサーバー上で動いている PHP や Ruby や node.js 等のプログラム
  3. その他

詳細が不明なので質問から推測できる範囲で...

2であれば、VirtualHost2(APIサーバー) を 127.0.0.1 で設定して、ホスト名を localhost で公開して、VirtualHost1(ウェブサイト)が、localhost で接続することで可能ではないでしょうか。

1の Webブラウザからアクセスする必要がある場合は、インターネットから接続できないとWebブラウザは、VirtualHost2(APIサーバー)にアクセスできなくなります。

VirtualHost2(APIサーバー)へのアクセスを中継することができればよいので、VirtualHost1(ウェブサイト)が、WebブラウザからVirtualHost2(APIサーバー)へのアクセスを中継するAPIを作成する必要があります。

投稿2021/07/09 06:47

CHERRY

総合スコア25218

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

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

mkz2020

2021/07/09 07:28

最初は2を考えていましたが、ちょっと大変になりそうで、ブラウザ側JSはすでにできているので、1にしようと思ったところ、アクセスを中継する方法がなんだかよく分かりませんでした。でも何となく分かってきました。
guest

0

回答になりますかどうか・・・。

/etc/hosts に

plain

1127.0.0.1 localhost localhost.my.domain

かなにかの記述があるとして・・・。

apache

1<VirtualHost localhost.my.domain:443> 2 DocumentRoot /var/www/html/example2 3 ServerName example2.com 4 # ・・・・・・・・・・・・・・・・・・・ 5 # ・・・・・・・・・・・・・・・・・・・ 6</VirtualHost>

と書いたらどうなりますか?
/etc/hosts の中身は、自身でしか見られないはずですし、そこにアクセスできるのは 自身のみになるかと思うのですが・・・。
もしくは、別途 ローカル IP を設定して、そちらの IP を /etc/hosts に記述。
それを「VirtualHost2」に割り当ててやるということでどうでしょうか。

いずれもやってみてはいないので、質問者さんで やってみるしかないのですが・・・。

投稿2021/07/09 05:54

showkit

総合スコア1638

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

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

mkz2020

2021/07/09 07:22

ありがとうございます。ローカルで転送すればよさそうと勘がつかめました。調べてやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問