1

Собственно такой вопрос.
Есть шлюз. Допустим с IP 111.111.111.111. Айпишник белый. Я его получил от прова.
На нем в iptables прописано такое правило

iptables -t nat -I PREROUTING 1 -p tcp -d 111.111.111.111 --dport 80 -j DNAT --to-destination 192.168.1.127:80

Следовательно все кто ломится на мой шлюз с 80 порта, перекидываются на 192.168.1.127, где стоит apache2 и с помощью VirtualHost держит два сайта. И показывает тот который нужно.

Возникла задача поднять еще сайт, но на другом сервере. Не на 192.168.1.127. Как это сделать? Имя сайта будет браться от субдомена одного из двух рабочих сайтов.
Например test.ru на первом сервере, а mail.test.ru на другом.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

2 (11.06.2012 23:17:08 отредактировано Cruiser78)

Думаю, что здесь надо будет делать редирект не только на шлюзе в iptables, но и на том сайте, куда направит iptables. Через .htaccess или аналогичные решения.
Например, у меня есть пара внешних IP-шников (два провайдера). Оба роутера прокидывают 80-й порт на внутренний apache. А тот - тривиально редиректит тотально вызовы на сайт фирмы, который находится у хостера во внешнем мире. Редиректит, если задать ему просто дефолтный адрес, без указания конкретного "каталога".

3

Пример можно? Никогда с этим не работал.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

4 (12.06.2012 00:01:15 отредактировано neol)

Для решения отлично подойдет nginx на шлюзе. Убрать правило из iptables и повесить nginx на обработку запросов с 80 порта.

Cruiser78 пишет:

Думаю, что здесь надо будет делать редирект не только на шлюзе в iptables, но и на том сайте, куда направит iptables. Через .htaccess или аналогичные решения.

Если apache, то mod_proxy.

Конфигурировать как-то так:

<VirtualHost 192.168.1.127:80>
    ServerName domain.ru    
    ProxyRequests On
    ProxyVia On
    ProxyPass / http://192.168.1.140/
    ProxyTimeout 30
</VirtualHost>

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

5

neol пишет:

Для решения отлично подойдет nginx на шлюзе. Убрать правило из iptables и повесить nginx на обработку запросов с 80 порта.

+1
Примеры

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

6

На шлюзе стоит именно nginx. Нужно его заставить проксировать 80 порт и редиректить два сайта на один ip, а третий на другой.
Если вы это делали и можете облекчить мне жизнь, киньте пример. Буду благодарен.
Из за того что не могу решить проблему, почти собрался переносить все сайты в одно место.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

7

Поробую сам. Потом вопросы задам.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

8

wiki - ngx_http_rewrite_module сам правда с регулярными выражениями не сильно подружился пока... ab

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

9

newzenon пишет:

wiki - ngx_http_rewrite_module сам правда с регулярными выражениями не сильно подружился пока... ab

А рерайт там зачем? ab

XliN

Там все просто с nginx, на два разных сайта (сколько бы доменов на них ни висело) создается два контекста server (аналог VirtualHost в httpd) и делается proxy_pass ip_of_httpd_server. Погугли про связку httpd+nginx, просто помни, что хттпед может находиться на другой машине спокойно ab

Black-metal ist krieg!
Hochlast ist krieg!

10

Уже не актуально. )) Один сервер ликвидировал и переехал полностью на mageia server.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

11

А как же CentOS, какая такая Mageia, ты что ai

12

Ka3aH6ac пишет:

А как же CentOS, какая такая Mageia, ты что

Променял великий и ужасный CentOS на магию. Как же так.. теперь не ждать статей и ответов в разделе Red Hat Linux, Fedora, ASP Linux, Cent OS

13 (14.06.2012 17:15:21 отредактировано XliN)

Магея только для сайтов и фтп. Все из-за созданного репозитария русского сообщества. На родном дистре это делается легче.
З.Ы. Остальные сервера у меня как были на центе, так и остались. Получилась сборная centos, ubuntu, mageia ну и windows 2003
upd: а крутится это все на , centos + kvm и centos + citrix xen

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

14

А у меня только Win машины ag
Сам если честно Cent не использую пока.

15

Ka3aH6ac пишет:

А у меня только Win машины ag
Сам если честно Cent не использую пока.

Что мешает? Шлюз хотя бы нужно Linux если нет cisco.

16

cisco это бренд =). линуксовый роутер умеет в разы больше законченной цисковой железяки, которая к тому же заточена под определенный уровень сетевой модели (исключение разве что cisco me3400, которая мультиуровневая). А вообще не в тему беседы даже это bx.


По сабжу - пробрасывайте до второго сервера другой порт (например 81). На первом сервере делаете нужный виртуалхост, а там редирект на нужный адрес, но с портом 81. iptables, к сожалению, не умеет мультиплексировать запросы.

17

У нас сейчас на шлюзе стоит ISA 2004 + TrafficQuota.
Доступ в Интернет дается на членстве по определенной группе в доменном контроллере Win2003.
Почтарь работает на Win2003 + Mdaemon + Winroute FireWall.
Ну и 1С 8.2 крутится на Win2003 + SQL 2008.
Вот такие вот пироги...

18

А Шлюз я бы перевел на связку Iptables+Squid+AD
Только что делать если надо учитывать весь трафик пользователей по всем портам, ставить квоты на месяц.

19

Denlookh пишет:

А рерайт там зачем? ab

Думал о чем-то своем, не ту ссылку дал, конечно же HttpProxyModule

Модуль ngx_http_proxy_module позволяет передавать запросы другому серверу.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.