2

Долгое время читатель первого раза постер (он хе). Итак, вот моя дилемма. У меня дома есть 3 сайта для друзей, ничего особенного, все только WordPress сайты. Запуск их в VMWare Workstation. Есть куча барана, чтобы сэкономить и весь этот беспорядок, так что не беспокойтесь на фронте ресурсов. Когда я строю сайт № 2, я понимаю: «Хлопок! ... Как я собираюсь направить их в маршрутизатор?«Теперь, прежде чем некоторые из вас скажут vhosts, я разделяю сайты на разных виртуальных машинах. 1 из 3 не очень важный сайт, но в случае чего-то я бы предпочел, чтобы все не закрывались одновременно , Так...

У меня есть общий маршрутизатор Linksys (с ужасным новым Smart Wifi). Человек, мне нужно изменить прошивку на хорошие вещи, но это еще один день. Таким образом, один общедоступный IP-адрес, 3 виртуальных машины с уникальными внутренними IP-адресами, т.е. 192..1/2/3. Маршрутизатор не позволяет переадресацию портов на несколько IP-адресов, использующих один и тот же порт (80).

Если способ многого сделать, я укушу пулю и перенесу их в одну и ту же виртуальную машину и зайду на разные сайты, но мои мысли заключались в том, чтобы использовать ДРУГУЮ виртуальную машину. Виртуальный роутер. Я могу подумать о некоторых виртуальных машинах маршрутизатора / брандмауэра, таких как pfSense, m0n0wall, но я просто ищу что-то простое и легкое для начала, но я предполагаю, что потребуется действовать немного как виртуальный хост, используя порт 80 запрос от маршрутизатора, затем рассредоточение трафика к 3 ВМ, содержащим веб-серверы, используя заголовки хоста (я думаю).

У кого-нибудь есть предложение, лучший метод и т.д.? Заранее признателен, и если бы все они находились под одной крышей виртуальной машины, это решило бы мгновенно, в моем случае разделение виртуальной машины своего рода превосходит это.

Но очень открыт для мыслей. Приветствия.

3 ответа3

3

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

2

Я пробовал различные решения, и у меня есть успех, используя Apache2. Он поставляется с функцией виртуального хостинга.

Вам нужно будет немного поработать над Apache2, но я включу свой conf как руководство для вас. Как это работает: apache2 работает с функцией «Name-Based Domain», где он запускает столько сайтов, сколько мне нужно, но только с одного публичного IP. [Я разработчик, который объясняет, почему так много сайтов].

   $ sudo apt-get install -y apache2 apache2-dev apache2-threaded-dev

Подключите ваш apache2.conf, добавив эти три строки в конце

   include httpd.conf
   <VirtualHost *>
   </VirtualHost>

Настройте ваш httpd.conf с этим руководством; отрегулируйте соответственно вашему случаю. По умолчанию в качестве новой установки вы не увидите httpd.conf, но Apache2 ответит, если обнаружит, что httpd.conf находится в каталоге /etc /apache2.

    $ sudo touch /etc/apache2/httpd.conf

и добавьте это в httpd.conf. Большой акцент стоит оставить :80 нетронутым.Когда ты видишь ' ## РЕДАКТИРОВАТЬ ЭТО * '; вот где вы можете редактировать по своему вкусу, оставляя других нетронутыми.

   <Directory "/var/www">  ***## EDIT THIS***
      Options Indexes FollowSymLinks
      AllowOverride All
   </Directory>

    <location /cgi-bin>
    AddHandler cgi-script .cgi .pl
    Options -Indexes +FollowSymlinks +ExecCGI
    </location>


  <VirtualHost *:80>
    ServerName example.ca  ***## EDIT THIS***
    ServerAlias www.example.ca ***## EDIT THIS***
    DocumentRoot /var/www/example_ca/html ***## EDIT THIS***
    <Location "/">
            Order Deny,Allow
            Deny from all
            Allow from all
    </Location>
      CustomLog /path/to/your/preferred/log-folder/access.log common ***## EDIT THIS***
      ErrorLog /path/to/your/preferred/log-folder/error.log ***## EDIT THIS***
   </VirtualHost>

  <VirtualHost *:80>
    ServerName sample.ca ***## EDIT THIS***
    ServerAlias www.sample.ca ***## EDIT THIS***
    DocumentRoot /var/www/sample_ca/html ***## EDIT THIS***
    <Location "/">
            Order Deny,Allow
            Deny from all
            Allow from all
    </Location>
      CustomLog /path/to/your/preferred/log-folder/access.log common ***## EDIT THIS***
      ErrorLog /path/to/your/preferred/log-folder/error.log ***## EDIT THIS***
   </VirtualHost>

затем...

   $ sudo service apache2 restart

и вуаля! Удачи!

РЕДАКТИРОВАТЬ: имейте в виду - после настройки сайтов и проверки их работоспособности в локальной сети вам необходимо обновить DNS с вашим поставщиком услуг DNS (где вы зарегистрировали эти домены) и обновить свой IP-адрес (где вы размещаете свою машину с эти мультисайты).

1

Маршрутизатор не позволяет переадресацию портов на несколько IP-адресов, использующих один и тот же порт (80).

Кстати, это невозможно со стандартным TCP/IP. Вам нужна программа, то есть прокси, которая принимает запросы через порт, просматривает запросы, а затем соответственно перебрасывает запросы.


Apache и другие веб-серверы имеют функцию "обратного прокси", которую можно использовать для "разделения" вашего входящего трафика. Обратный прокси-сервер сообщает Apache, что запросы на определенный веб-путь, т. Е. «Yourdomain /directory1», должны быть переданы другому веб-серверу, а ответы от этого веб-сервера возвращены исходному клиенту.

Однако помните, что если у вас есть приложения, работающие на этом веб-сервере (PHP и т.д.), Им может потребоваться изменить настройки, так как их внешний URL-адрес будет другим. Возможно, вам придется сообщить PHP-приложению, что оно находится в «yourdomain /directory1», а не в "yourdomain", чтобы оно могло правильно генерировать ссылки. Можно попросить Apache переписать трафик с внутреннего сервера, прежде чем он вернет его клиенту, но это сложно, и вы можете избежать его, если это возможно. Приложения, которые генерируют ссылки с помощью Javascript, могут быть особенно проблематичными, поэтому не все веб-приложения легко "реверсивно проксируются".

Так что установите Apache на четвертую "внешнюю" виртуальную машину - перенаправьте свой входящий TCP 80 на эту виртуальную машину. Вы также должны убедиться, что эта виртуальная машина может подключаться к другим виртуальным машинам в вашей "виртуальной сети". Затем на своей "интерфейсной" виртуальной машине вы можете настроить отдельный обратный прокси-сервер для каждого веб-сайта.

Вот соответствующие подробности конфигурации Apache, используя директивы ProxyPass и ProxyPassReverse .

Вы также можете разработать и внедрить кэширование, которое поможет повысить производительность.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .