Мне нужно настроить несколько серверов, которые должны работать на портах выше 5000. (Это запрос от клиента для выполнения этой работы из-за внутренней политики, и я ничего не могу с этим поделать). Меня беспокоит, среди прочего, что я должен настроить веб-сервер для работы на порту, отличном от 80, но сайт все равно должен иметь возможность получать запросы, такие как example.com/contact и example.com/register. . Поскольку он не будет работать на 80-м порту, я не смогу использовать A Record. Итак ... возможно ли вообще выполнить эту работу? Я мог бы настроить Apache для использования 5080 или чего угодно, но что потом? Как люди за пределами локальной сети могли получить к нему доступ по адресу example.com/whatever?
Эту работу можно выполнить, но не только с помощью записи DNS. Перед веб-сервером необходимо установить брандмауэр, который может выполнять переадресацию / изменение порта. Затем просьба к example.com/contact
может быть передан на порт 5080 на внутреннем IP-адресе вашего сервера Apache, когда он проходит через брандмауэр, или запрос на example.net/register
может быть перенаправлен на порт 5180 на том же сервере Apache или порт 5080 на совершенно другой сервер, в зависимости от того, как вы хотите его настроить.
Это часто называют Обратный прокси.
В зависимости от возможностей брандмауэра обратного прокси вам, вероятно, потребуется другое доменное имя для каждого внутреннего порта или адреса (обратите внимание на .net и .com в приведенных выше примерах), особенно если вы хотите обрабатывать трафик https, и эти домены могут даже нужно указать на другой публичный IP-адрес, который вы контролируете.
Поскольку это не сработает, вы можете попробовать внешний веб-сервер, который работает аналогично службе сокращения URL-адресов, такой как bit.ly. Внешний веб-сервер может получить запрос от пользователя на такие адреса, как example.com/register
и ответьте перенаправлением http 301 для example.net:5080/register
. Практически любой веб-браузер эпохи IE 5 / Netscape 4.3 и последующих последует этому, и он будет в основном прозрачным для пользователя.