Один IP-адрес, два сайта, на двух машинах - нужны детали

Этот вопрос уже был опубликован другим пользователем, но подробный ответ не был дан. Вот ссылка на оригинальный вопрос - Один IP-адрес, два веб-сайта на двух машинах

У меня есть две машины с установленным apache2 и статическими IP-адресами.

Сервер 1

example.com
static ip = 192.168.0.6
apache2 running on ports 80 and 443 fine
ufw and router firewall are open on ports 80 and 443 as well

Сервер 2

domain name = myhost01.example.com 
static ip = 192.168.0.7
apache2 running on 8080(HTTP) and 8443(HTTPS) 
ufw and router firewall are open on ports 8080 and 8443

Когда я иду на {http) www.example.com или (https) www.example.com - я правильно получаю веб-контент для сервера 1

Когда я захожу на myhost01.example.com:8080 или myhost01.example.com:8443 - я правильно получаю веб-контент для сервера 2

Я хотел бы обратить прокси-сервер 2 таким образом, когда пользователь заходит на http: // myhost01 .example.com / он получает контент для http: // myhost01. example.com:8080/, в основном скрывает номер порта. В настоящее время я получаю сообщение об ошибке «невозможно подключиться / веб-страница не найдена», когда я пытаюсь получить доступ к myhost01 (точка) пример (точка) com

В файле виртуального хоста для example.com я использовал следующее :

ProxyRequests Off

ProxyPass / http://myhost01. example.com:8080/
ProxyPassReverse / http://myhost01 .example.com:8080/

Оба модуля proxy и proxy_http включены в apache2

Любые идеи о том, как заставить это работать?

PS - В URL были добавлены пробелы, потому что у меня недостаточно очков репутации, чтобы разместить более двух URL.

** ОБНОВЛЕНИЕ - см. Примечания ниже

Server1 - example.com - VHOST FILE

<VirtualHost *:80>

    ServerAdmin myadm@example.com
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /myweb/cmweb/apache/http

#ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://myhost01.example.com:8080/
ProxyPassReverse / http://myhost01.example.com:8080/

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /myweb/cmweb/apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        LogLevel warn

</VirtualHost>

Пробный прокси с 192.168. 0.7 замена myhost01 (точка) пример (точка) com безрезультатно

Server2 - myhost01 (точка) пример (точка) com VHOST-файл

 <VirtualHost *:8080>

    ServerAdmin mwdhost@example.com
    ServerName myhost01.example.com
    ServerAlias myhost01 myhost01.example.com

    DocumentRoot /mwdhost/cmweb/apache/http

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mwdhost/cmweb/apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    LogLevel warn

</VirtualHost>

myhost01 имеет был добавлен в «Запись о регистрации домена» может выполнить NSLOOKUP и получить правильный внешний IP-адрес для myhost01.example.com

Здесь ниже приведен Apache Error.log для server1 - Может быть, это ключ к моим проблемам? ?

Sun Feb 02 18:24:52 2014] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 54.43.138.12:8080 (myhost01.example.com) failed
[Sun Feb 02 18:24:52 2014] [error] ap_proxy_connect_backend disabling worker for (myhost01.example.com)
[Sun Feb 02 18:24:53 2014] [error] proxy: HTTP: disabled connection for (myhost01.example.com) 
[Mon Feb 03 07:33:54 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
3
задан 13 April 2017 в 15:23

2 ответа

Предложения:

Проверено, что server1 (example.com) может искать и получать правильные записи DNS для myhost01.example.com?

Ваши серверы есть один публичный IP каждый и один внутренний? Или это похоже на связанный вопрос, что у вас есть один IP?

Чувствую ли я дешевый маршрутизатор с одним IP, который запускает nat и переадресацию портов на упомянутые порты?

  • Часто у дешевых маршрутизаторов возникают проблемы с объединением nat и перенаправлением портов с использованием внешних адресов для доступа к другим внутренним машинам. Некоторые также намеренно отказывают в этом, так как отправлять всю внутреннюю нагрузку с вашего шлюза / маршрутизатора nat является плохой практикой.

Обе записи DNS (myhost1.example.com и example.com) указывают на один и тот же общедоступный IP-адрес?

  • да, и это преднамеренно и правильно, но что происходит?

    • Когда экземпляр Apache хочет найти, где выполнить подключение через прокси, ему сообщают внешний IP-адрес myhost01.example.com, который указывает на маршрутизатор, который может дать сбой. связь. Предположим, что это так.

Мы нашли одну возможную ошибку, как нам ее обойти?

  • Как внешний IP от DNS не поможет server1 найти локальный IP-адрес для прохождения через локальную сеть, если нам нужен способ сделать это, к счастью, существует много способов добраться до Рима.

    • Одним из способов было бы использование локального IP-адреса server2 в ProxyPass.
    • Другим способом было бы просто переопределить ваши ответы DNS. Это можно сделать на сервере server1, который служит прокси. Отредактируйте файл /etc/hosts. Дополнительную информацию о файле хоста вы можете прочитать здесь.
    • Третий способ - сделать дополнительные записи DNS для ваших локальных серверов. Например, запись с именем, например. local2.example.com указывает на 192.168.0.7.

Примечание. Если вам интересно, вполне возможно иметь больше публичных IP-адресов и запускать их в небольшой подсети, например. это также будет служить в качестве взаимосвязи. Думал, что это не очень рекомендуется делать.

Отказ от ответственности

Этот ответ основан на опытном предположении, поскольку полная конфигурация, журналы Apache и ошибки отсутствуют в ответе. Не стесняйтесь улучшать.

0
ответ дан 13 April 2017 в 15:23

Ваш подход кажется излишним.

Все современные веб-серверы позволят вам привязать несколько веб-сайтов к одному IP-адресу и порту. Это делается путем настройки имени заголовка узла для соответствующих сайтов.

Кроме того, с помощью SNI вы можете указать нескольким сайтам SSL один и тот же IP-адрес и порт (443 или любой другой). Старые браузеры не поддерживают SNI, но это может вас не беспокоить.

Подключение одного из сайтов к порту 8080 и последующее подключение через него прокси-сервера - долгий путь, если нет явной необходимости каким-либо образом выставлять порт 8080 клиенту.

Будучи занятым парнем, я не трачу много времени на настройку Apache без крайней необходимости. В противном случае я использую Virtualmin ( http://www.webmin.com/virtualmin.html ), и он обрабатывает 85% грязной работы для такой конфигурации.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: