Назад | Перейти на главную страницу

Виртуальный хост прокси-сервера Apache на внутреннем сервере

У меня есть 2 веб-сервера Debian, интерфейс, принимающий запрос с порта 80, и бэкэнд через прокси-сервер из внешнего интерфейса.

Я хочу иметь много разных 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.

По сути, мне нужна возможность запускать несколько виртуальных хостов на внутреннем сервере.

Спасибо за вашу помощь.

Как насчет такого изменения настроек внешнего интерфейса? И вам не нужны настройки виртуального хоста в бэкэнде.

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

Смотри сюда Совместное использование 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]) передаст строку Host: из входящего запроса на проксируемый хост вместо имени хоста, указанного в ProxyPass линия.


Я думаю (но не уверен), что в этом случае можно даже без 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>