
Сценарий:
Из-за ограниченного количества IP-адресов несколько доменов преобразуются в один и тот же IP-адрес. Однако эти домены могут не работать на одном и том же веб-сервере, виртуальной машине или даже выделенной машине. Поэтому я хотел бы направить домены в точке входа в частную сеть в нужное место при условии наличия домена в URL-адресе.
Как я могу это сделать?
решение1
Большинство маршрутизаторов/межсетевых экранов позволяют перенаправлять трафик на основе определенного порта, например, весь SMTP-трафик (порт 25) перенаправляется на 192.168.1.1.
Но если у вас есть несколько серверов для обработки трафика (по одному серверу на домен). Вам нужно установить что-то вроде обратного прокси-сервера (nginxподдерживает это для HTTP, IMAP, POP3). Например, весь трафик на порт 80 перенаправляется на , на 192.168.1.2
котором работает nginx, и в зависимости от имени хоста будет перенаправляться на localhost
или 192.168.1.4
.
решение2
Я не уверен, что полностью понял ваш вопрос. Если да, то у вас есть несколько машин, работающих как HTTP-серверы за NAT. Когда приходит какой-то запрос, вы хотите переслать его на один из своих серверов, верно?
Если вы используете Apache и mod_rewrite, вы можете сделать это следующим образом:
Ваше здоровье.
решение3
Я сделал нечто подобное, используяProxyPassдиректива в mod_proxy в Apache.
Прежде всего, используйтеВиртуальный хостинг на основе имениЧтобы разрешить разным доменам размещать разные сайты, используя один и тот же IP-адрес, для доменов, связанных с внутренним веб-сервером, у вас есть такая конфигурация:
# Within your VirtualHost definition
ServerName somedomain.com
ProxyPass / http://10.0.1.42/
ProxyPassReverse / http://10.0.1.42/
Это приведет к тому, что все запросы будут http://somedomain.com
прозрачно перенаправляться на внутренний сайт, размещенный на http://10.0.1.42
.
НТН
решение4
Я искал то же самое некоторое время назад. Так и не дошли руки сделать это, но вот что я подумал, может сработать.
используйте mod
модуль _proxy и используйте noproxy
директиву.