sax_
@sax_ (sax)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Apacheのプロキシ設定に関する質問

Q&A

Closed

解決したいこと

Dockerで8080番ポート、ホストで80番ポートでApacheを多重起動させています。(Dockerではphp-apacheのイメージを利用しています。)
Docker側でVirtualHostを設定しているサイトにホスト側からhtaccessを使用してProxyでアクセスできるようにしたいです。
理由としては、他にも8081番、8082番で複数バージョンのPHPコンテナを起動しているのですが、それらをサイト毎に切り替えたいと考えているためです。

現状の設定

Docker側のVH設定

<VirtualHost *:8080>
    ServerAlias *.example.com
    VirtualDocumentRoot /home/www/%1
</VirtualHost>

ホスト側のVH設定
(Proxy設定箇所をhtaccessで設定できるようにしたい)

<VirtualHost *:80>
    ServerAlias *.example.com
    VirtualDocumentRoot /home/www/%1 # <- htaccessを使う場合に設定
    ProxyPreserveHost on
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

発生している問題

htaccessで下記設定を行うと、
例えば「http://test.example.com」にアクセスした際「http://127.0.0.1:8080」に接続されてしまい、Dockerコンテナ内の_default_のVHに接続されてしまいます。

RewriteEngine on
RewriteRule (.*) http://127.0.0.1:8080/$1  [P]

curlコマンドで

curl --proxy http://127.0.0.1:8080 http://test.example.com

で接続するのと同様の設定をhtaccessで行いたいです。

自分で試したこと

上記のVH設定やhtaccess設定

0

1Answer

この質問は、コンテナ間での名前解決はどうやるのですか?という内容だと思います。
ヒントになれば幸いです。

80番で待ち受けるapache
docker run \
 -p 80:80 \
 --link test:test \
 --link test2:test2 \
 ()
 apache
test.example.com
docker run --name test apache
test2.example.com
docker run --name test2 apache
  <VirtualHost *:80>
    ServerAlias *.example.com
    ProxyPreserveHost on
-   ProxyPass / http://localhost:8080/
-   ProxyPassReverse / http://localhost:8080/
+   ProxyPass / http://%1/
+   ProxyPassReverse / http://%1/
  </VirtualHost>
1Like

Comments

  1. @sax_

    Questioner

    解決しました!ありがとうございます。

Your answer might help someone💌