Представьте, что у меня есть 10 разных доменов. Все эти домены имеют запись A для одного IP-адреса. На этом IP-адресе размещено десять различных сервисов. Предположим, они слушают через порт :80
к :90
. Порт по умолчанию для используемого протокола: :80
и я не могу заставить пользователей добавлять :82
к доменному имени.
И вот проблема: я хочу внутренне пересылать :80
в зависимости от используемого доменного имени.
domain0.com
:80
-> :80
domain1.com
:80
-> :81
domain2.com
:80
-> :82
domain3.com
:80
-> :83
Я погуглил и наткнулся на 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
нужно активировать.