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

Перенаправлять весь трафик с определенного порта в зависимости от домена на другой порт

Представьте, что у меня есть 10 разных доменов. Все эти домены имеют запись A для одного IP-адреса. На этом IP-адресе размещено десять различных сервисов. Предположим, они слушают через порт :80 к :90. Порт по умолчанию для используемого протокола: :80 и я не могу заставить пользователей добавлять :82 к доменному имени.

И вот проблема: я хочу внутренне пересылать :80 в зависимости от используемого доменного имени.

Я погуглил и наткнулся на iptables. Это то, что я ищу?

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

Если вы пытаетесь разместить несколько сайтов SSL на одном IP-адресе, ни один из этих методов не будет работать, потому что заголовок и URL-адрес зашифрованы.

Вообще-то так нельзя. Когда клиент подключается через TCP и / или UDP, сервер не имеет информации о том, какой домен клиент использовал для запроса IP-адреса сервера.

Поскольку вы упоминаете порт 80, вы можете говорить о HTTP-трафике. В этом случае это различие может быть сделано, поскольку протокол HTTP также передает выбранное доменное имя. Вы можете использовать HTTP-сервер, такой как Apache, и настроить виртуальный хост для каждого домена, который действует как обратный прокси и перенаправляет трафик на правильный порт. Подобная конфигурация может выглядеть примерно так:

<VirtualHost *:80>
    ServerName domain1.com

    ProxyPass / http://server-ip:81/
</VirtualHost>

Для этого работают модули proxy и proxy_http нужно активировать.