Этот вопрос уже был опубликован другим пользователем, но подробный ответ не был дан. Вот ссылка на оригинальный вопрос - Один 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)
Проверено, что server1 (example.com) может искать и получать правильные записи DNS для myhost01.example.com
?
Ваши серверы есть один публичный IP каждый и один внутренний? Или это похоже на связанный вопрос, что у вас есть один IP?
Чувствую ли я дешевый маршрутизатор с одним IP, который запускает nat и переадресацию портов на упомянутые порты?
Обе записи DNS (myhost1.example.com и example.com) указывают на один и тот же общедоступный IP-адрес?
да, и это преднамеренно и правильно, но что происходит?
myhost01.example.com
, который указывает на маршрутизатор, который может дать сбой. связь. Предположим, что это так. Мы нашли одну возможную ошибку, как нам ее обойти?
Как внешний IP от DNS не поможет server1 найти локальный IP-адрес для прохождения через локальную сеть, если нам нужен способ сделать это, к счастью, существует много способов добраться до Рима.
/etc/hosts
. Дополнительную информацию о файле хоста вы можете прочитать здесь. 192.168.0.7
. Примечание. Если вам интересно, вполне возможно иметь больше публичных IP-адресов и запускать их в небольшой подсети, например. это также будет служить в качестве взаимосвязи. Думал, что это не очень рекомендуется делать.
Отказ от ответственности
Этот ответ основан на опытном предположении, поскольку полная конфигурация, журналы Apache и ошибки отсутствуют в ответе. Не стесняйтесь улучшать.
Ваш подход кажется излишним.
Все современные веб-серверы позволят вам привязать несколько веб-сайтов к одному IP-адресу и порту. Это делается путем настройки имени заголовка узла для соответствующих сайтов.
Кроме того, с помощью SNI вы можете указать нескольким сайтам SSL один и тот же IP-адрес и порт (443 или любой другой). Старые браузеры не поддерживают SNI, но это может вас не беспокоить.
Подключение одного из сайтов к порту 8080 и последующее подключение через него прокси-сервера - долгий путь, если нет явной необходимости каким-либо образом выставлять порт 8080 клиенту.
Будучи занятым парнем, я не трачу много времени на настройку Apache без крайней необходимости. В противном случае я использую Virtualmin ( http://www.webmin.com/virtualmin.html ), и он обрабатывает 85% грязной работы для такой конфигурации.