web-dev-qa-db-ja.com

バックエンドサーバー上のApacheプロキシ仮想ホスト

ポート80からのリクエストを受け入れるフロントエンドとフロントエンドからのプロキシ経由のバックエンドの2つのWebDebianサーバーがあります。

私がやりたいのは、仮想ホストを備えたバックエンドサーバーに接続するさまざまなURLを用意することです。

これがフロントエンドのApache設定です

<VirtualHost *:80>
    ServerName dev.example.com
    ProxyPass / http://192.168.144.100:80/
    ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>

<VirtualHost *:80>
    ServerName sandbox.example.com
    ProxyPass / http://192.168.144.100:80/
    ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>

そして、これがバックエンドのApache設定です

 <VirtualHost *:80>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/
                <Directory />
                        Options FollowSymLinks
                        AllowOverride None
                </Directory>
                <Directory /var/www/>
                        Options Indexes FollowSymLinks MultiViews
                        AllowOverride None
                        Order allow,deny
                        allow from all
                </Directory>
    </VirtualHost>
    <VirtualHost *:80>
            ServerAdmin webmaster@localhost

            ServerName dev.example.com

            DocumentRoot /var/www/example.com/dev/
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/example.com/dev/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
            </Directory>
    </VirtualHost>

   <VirtualHost *:80>
            ServerAdmin webmaster@localhost

            ServerName sandbox.example.com

            DocumentRoot /var/www/example.com/sandbox/
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/example.com/sandbox/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
            </Directory>
    </VirtualHost>

Dev.example.comまたはsandbox.example.comにアクセスすると、デフォルトの/ var/wwwファイルに移動します。

基本的に、バックエンドサーバーで複数の仮想ホストを実行する機能が必要です。

ご協力いただきありがとうございます。

4
tdbui22

このようにフロントエンドの設定を変更してみませんか?また、バックエンドに仮想ホスト設定は必要ありません。

<VirtualHost *:80>
    ServerName dev.example.com
    ProxyPass / http://192.168.144.100:80/
    ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>

<VirtualHost *:80>
    ServerName sandbox.example.com
    ProxyPass / http://192.168.144.100:80/example.com/dev/
    ProxyPassReverse / http://192.168.144.100:80/example.com/dev/
</VirtualHost>
4
Naoyuki Yamada

ここを見てください Virtual_Hostとmod_proxyを一緒に使用

<VirtualHost *:80>
    ProxyPreserveHost On
    ServerName dev.example.com
    ProxyPass / http://192.168.144.100:80/
    ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ServerName sandbox.example.com
    ProxyPass / http://192.168.144.100:80/
    ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>

有効にすると、このオプション([ProxyPreserveHost][1])は、ProxyPass行で指定されたホスト名ではなく、着信要求からプロキシされたホストにHost:行を渡します。


この場合、次のようにProxyPreserveHostなしでも実行できると思います(ただし確かではありません)。

これをフロントエンドのhostsファイルに入れます

192.168.144.100 dev.example.com
192.168.144.100 sandbox.example.com

次にこれを行います:

<VirtualHost *:80>
    ServerName dev.example.com
    ProxyPass / http://dev.example.com/
    ProxyPassReverse / http://dev.example.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName sandbox.example.com
    ProxyPass / http://sandbox.example.com/
    ProxyPassReverse / http://sandbox.example.com/
</VirtualHost>
2
Athmailer