7

У меня есть несколько веб-серверов за одним межсетевым экраном (SVN, Exchange и т.д.). Я хочу иметь возможность удаленного доступа ко всем различным серверам, но так как все они используют один и тот же порт (стандартный HTTPS), возможно ли это?

Если бы я настроил его так, чтобы каждый прослушивал разные порты, можно ли было бы сделать так, чтобы я мог обращаться к каждому серверу, используя другой субдомен (так что svn.domain.com будет указывать на svn, mail.domain. ком бы указывать на сервер обмена)? Возможно, есть способ настроить мой маршрутизатор на переадресацию порта по-разному в зависимости от того, какой поддомен запрашивал клиент?

Как люди обычно решают эту проблему?

5 ответов5

8

Лично мне нравится использовать обратный прокси в apache при обслуживании нескольких серверов за одним IP-адресом. Я написал статью об этом несколько лет назад.

Могут быть случаи, когда вам нужно иметь несколько веб-серверов, но вы получили только один публичный IP-адрес. Проблема, с которой вы столкнетесь, заключается в том, что вы хотите, чтобы несколько доменов разрешали один и тот же IP-адрес, но указывали на другой сервер. Это очень выполнимо с Apache. Я настроил сервер шлюза в своем частном облаке с адресом 192.168.1.2. У меня есть несколько веб-серверов с локальными адресами; 192.168.1.10 и 192.168.1.11, например.

На моем сервере шлюза я устанавливаю Apache и файлы mod_proxy. Как только это будет завершено, я смогу настроить виртуальные хосты для переадресации домена.

<VirtualHost *:80>
   DocumentRoot /var/www/example.org
    ServerName *.example.org
    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>
    ProxyPreserveHost on
    ProxyPass / http://192.168.1.10/
    ProxyPassReverse / http://192.168.1.10
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot /var/www/example.com
    ServerName *.example.com
    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>
    ProxyPreserveHost on
    ProxyPass / http://192.168.1.11/
    ProxyPassReverse / http://192.168.1.11/
</VirtualHost>

Перезапустите Apache и настройте маршрутизатор на прием входящих подключений по локальному адресу 192.168.1.2. Хотя я мог бы указать DocumentRoot в том же месте (например, /var /www), но у меня обычно есть файлы .htaccess для каждого сайта, где я могу принудительно использовать SSL (перенаправить 80 на 443 для определенных доменных имен).

Приятной особенностью этого маршрута является то, что вы можете обслуживать несколько серверов HTTPS с одним и тем же IP-адресом. Единственная проблема заключается в том, что Internet Explorer не распознает порт VirtualHost 443 или именованный хост, и вы получите ошибку сертификата. Однако Safari, Firefox и Chrome распознают каждый отдельный сертификат для домена, который проксируется.

2

Или вы можете использовать PageKite :)

Смотрите страницу проекта ниже:
https://pagekite.net/wiki/OpenSource/

1

Вы можете сделать это, настроив субдомены во внутреннем и внешнем DNS. Вот хорошая статья, объясняющая, что вам нужно добавить в зависимости от того, какой DNS вы используете. Помните, что при добавлении записей во внешний DNS для распространения требуется время.

1

Кобальц, наверное, лучшее решение.

Но если вы хотите использовать порты не по умолчанию, вы можете настроить переадресацию портов (фактически это просто NAT, который изменяет порт источника / назначения) одного из приложений. Таким образом, один из них будет представлен как обычный порт 443 для https, а другой - как 8443. Чтобы перейти на этот другой сервер, вам нужно будет ввести https://youipaddress:8443 (или запись DNS, если у вас есть одна настройка). Конечно, это работает, только если вы хотите использовать другой номер порта, но это довольно распространенное решение, когда возможности ограничены.

Конкретная конфигурация будет сильно различаться в зависимости от того, какое пограничное устройство выполняет NAT (ваш брандмауэр или маршрутизатор), но обычно вы будете переводить так:

внутренний IP -> Внешний IP (возможно, IP вашего внешнего интерфейса) стандартный порт (443) -> выбранный порт (например. 8443)

Вот хорошая статья о переадресации портов.

0

Вот документация Microsoft по настройке прокси-сервера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .