Может ли кто-нибудь подсказать мне, что искать, чтобы получить маршрутизатор / шлюз / брандмауэр для моей среды домашнего офиса, чтобы иметь возможность запустить несколько, например, веб-сервер на порту 80, с одним публичным IP. Я знаю, что это можно сделать с помощью Apache или IIS на сервере-компьютере. Маршрутизатор Cisco или Netgear?
Например:
host1.example.com:80 -> 192.168.0.101
host2.example.com:80 -> 192.168.0.102
решение1
Openwrt имеет хорошую поддержку apache/squid. Я использовал apache даже для обратного прокси. Единственное, что вам нужно, это совместимый с openwrt маршрутизатор.
Во-вторых, вам нужно настроить apache (я предлагаю apache для этого) в этом специальном методе работы прокси. Это не так сложно, как кажется. Если хотите, я был рад скопировать-вставить некоторые примеры конфигурации в этом посте.
Не так уж много проблем с потребностью в CPU для такого прокси - большинство маршрутизаторов не имеют очень мощного CPU - потому что то, что делает такая конфигурация hw/sw, на самом деле не больше, чем если бы она просто пересылала пакеты. Нет таких ресурсоемких вещей, как php-interpretation или jvm, и Apache может работать со своим "worker" mpm в потоковом режиме, что очень быстро.
решение2
Маршрутизаторы обычно не запускают серверы. Маршрутизаторы на базе OpenWRT и DD-Wrt могут обеспечить эту функциональность, если у них достаточно памяти. Это связано с тем, что они работают под управлением ядра Linux. Возможности веб-сервера реализуются путем запуска веб-сервера или прокси-сервера, такого как Apache или Squid.
Если у вас есть несколько небольших сайтов для сервера, вы можете использовать Rasberry Pi или аналогичное устройство для запуска ваших веб-сайтов. Если вам требуется больше мощности, небольшой сервер под управлением Linux может обеспечить как брандмауэр, так и возможности веб-сервера. Я начал с переработанной настольной системы со второй сетевой картой под управлением Linux как веб-сервера и брандмауэра.
Я делаю это разделение на веб-сервере. Основные веб-серверы обрабатывают доставку контента на основе заголовка Host. Веб-сервер Apache называет эту функциональность VirtualHosts. Можно проксировать часть или весь трафик Host на второй сервер.
Многодоменный HTTPS сложнее, так как сертификаты связаны с именем хоста. Если домены связаны, многодоменный или wildcard сертификат будет работать. Некоторые серверы могут обрабатывать согласование имени хоста перед предоставлением сертификата, хотя мне никогда не удавалось успешно реализовать это.
Вам нужно, чтобы ваш маршрутизатор пересылал HTTP-запросы на ваш веб-сервер. Большинство маршрутизаторов предоставляют эту возможность по порту и/или в качестве адреса DMZ.