Как настроить несколько доменов для указания для разделения виртуальных машин с единственным IP?

Позволяет говорят, что у нас есть 2 домена

http://www.foo.co.uk
http://www.bar.co.uk

1 общедоступный статический IP для сервера LTS Ubuntu 16.04 80.12.34.56 (192.168.0.11 локально)

И 2 Ubuntu 16.04 KVM экземпляры сервера LTS, работающие на той же машине в 192.168.0.17 и 192.168.0.18

Как можно было бы пойти о перенаправлении трафика от foo.co.uk кому: 192.168.0.17 при хранении трафика от bar.co.uk кому: 192.167.0.18?

Править: Это - мой/sites-available/proxy_server.conf файл прямо сейчас

<VirtualHost *:80>

   ProxyRequests Off
   ProxyPreserveHost On

   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

   ProxyPass / http://192.168.0.18:8080/
   ProxyPassReverse / http://192.168.0.18:8080/
   ServerName syphonx.localhost

   CustomLog /var/log/apache2/access.log combined
   ErrorLog /var/log/apache2/error.log

</VirtualHost>

Это производит ошибки в моем файле error.log как это

[proxy:error] [pid 7701:tid 139952398472960] (113)No route to host: AH00957:     HTTP: attempt to connect to 192.168.0.18:8080 (192.168.0.18) failed

[proxy:error] [pid 7701:tid 139952398472960] AH00959: ap_proxy_connect_backend disabling worker for (192.168.0.18) for 60

[proxy_http:error] [pid 7701:tid 139952398472960] [client ##.#.##.##:55331] AH01114: HTTP: failed to make connection to backend: 192.168.0.18

Я попытался проверить с помощью ping-запросов между ними, но кажется, что сети для 2 экземпляров KVM на *.17 и *.18 настроены как таковые, что я не могу получить доступ к ним.

1
задан 18 October 2016 в 03:05

2 ответа

Это немного походит на мою установку, которую я имею в распоряжении в своей сети. У меня есть несколько веб-услуг по направлению на мои домашние серверы, но на другого системного дюйм/с.

У меня есть специализированное nginx сервер в одной системе, которая обрабатывает весь входящий трафик на общедоступном IP по портам 80 и 443, и обратные прокси к серверам бэкэнда в моей сети, где вещи (которые являются Apache, nginx, и lighttpd, таким образом, это не обязательно специфично для бэкендов). Я в настоящее время делаю это для экземпляра GitLab и экземпляра OwnCloud на отдельных IP-адресах и сервера, это в настоящее время выключено (ранее выполнил тестовый экземпляр MediaWiki).

Примечание: Этот ответ записан с идеей, что система, делающая проксирование реверса, определенное ниже, является отдельной системой и не одной из Ваших существующих конфигураций сервера. Если это - один из Ваших существующих серверов, то не изменяйте существующие конфигурации, кроме добавить новую для отдельного сайта, который не находится на том сервере, вместо того, чтобы настроить новые конфигурации для каждого сервера. Я также предлагаю использование nginx; можно сделать это на любом веб-сервере, который Вы хотите, я просто знаю, как быстро выполнить в этом nginx.


(1) Установка nginx на одном из серверов, или настроенный другой

Я использую nginx, и nginx-core вариант для этого, но можно использовать Apache или любой веб-сервер, которым Вы довольны и знаете, как настроить (но так как я использую nginx, Я использую nginx инструкции здесь). Я также использую ssl-cert создать спам самоподписало сертификат для выгоды по умолчанию все для использования.

sudo apt-get install nginx nginx-core ssl-cert

(2) Настройте это nginx сервер для вместилища 'по умолчанию' для недопустимых доменов.

Во-первых, давайте сделаем некоторые изменения для всеобъемлющего сайта по умолчанию.

sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/catch-all

Поместите это в /etc/nginx/sites-available/catch-all файл:

server {
    listen 80 default_server;
    listen 443 ssl default_server;

    server_name _;

    include snippets/snakeoil.conf;

    return 404;
}

Это - значение по умолчанию, 'ловят все' для любого типа соединения с IP-адресом для любого домена, который мы не настроили на nginx экземпляр для прислушиваний к соединениям. Таким образом, мы можем служить "Не Найденный" для любых недопустимых доменов, направляемых здесь. Мы явно определим все домены, которые, как мы говорим, в порядке в отдельных конфигурационных файлах. На данный момент, тем не менее, давайте включим этой выгоде все, затем начнем настраивать отдельные домены.

sudo ln -s /etc/nginx/sites-available/catch-all /etc/nginx/sites-enabled/

(3) Настройте nginx для человека, разрешенного сайты и их обратные прокси

Для этого примера я собираюсь использовать www.foo.co.uk и www.bar.co.uk на Ваше сообщение.

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

Для каждого сайта Вы хотите инвертировать прокси, запуститься путем создания файла с доменным именем. Я собираюсь использовать эти два домена, которые Вы заявили как примеры.

sudo touch /etc/nginx/sites-available/{www.foo.co.uk,www.bar.co.uk}

В каждом из двух созданных файлов можно поместить это на месте. Просто обновите информацию соответственно везде, где мои комментарии (ими предшествуют #):

server {
    listen 80;

    server_name DOMAINNAME;  # Replace DOMAINNAME with the actual domain

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;

        # Replace this INTERNALIPADDRESS:PORT with the IP and port
        # combination for the server on your network handling the
        # above-specified domain name.
        proxy_pass http://INTERNALIPADDRESS:PORT/;
    }
}

После того, как созданный, мы еще раз должны активировать их.

sudo ln -s /etc/nginx/sites-available/www.foo.co.uk /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/www.bar.co.uk /etc/nginx/sites-enabled/

Теперь, когда мы активировали сайты, давайте удостоверимся, что здесь нет никаких ошибок конфигурации. Если эта команда выкладывает, что-либо кроме 'синтаксиса конфигурационного файла в порядке', и 'тест конфигурационного файла успешен', затем необходимо исправить те ошибки:

sudo nginx -t

Если нет никаких ошибочных уведомлений, и Вы получаете "OK" и "Успешные" сообщения, то перезапускаете nginx процесс, чтобы заставить все конфигурации на самом деле вступить в силу.

Ubuntu 14.04 и ранее:

sudo service nginx restart

Ubuntu 16.04:

sudo systemctl restart nginx

(4) Настройте перенаправление портов в своей сети к портам передачи 80 и 443 к серверу, на котором Вы просто настраиваете этот обратный прокси-сервер.

В примере я просто записал, скажем, что сервер я поместил nginx на 192.168.100.200. На Вашем маршрутизаторе, настроенный порт 80 и порт 443 для маршрутизации к тому IP-адресу. Если Вы не предназначаете при использовании HTTPS, то только порт передачи 80.


(5) Укажите на DNS для своих доменов к Вашему общедоступному IP-адресу в Вашем доме.

Это симпатично сам объяснительный, но удостоверьтесь DNS A запишите указывает на IP-адрес, что Ваш маршрутизатор дает Вам в Общедоступном Интернете. (Перейдите в ipchicken.com или подобный для получения IP-адреса, если Вы не знаете это),


(6) Вы сделаны, как только DNS распространяет. Тест от любой системы НЕ в Вашей домашней сети (такой как компьютер на общедоступном Wi-Fi в кафе или чем-то).

1
ответ дан 7 December 2019 в 15:46

Я думаю, что ваши виртуальные хосты используют мостовую сеть, что означает, что они не могут подключиться к хосту, или хост не может подключиться к ним.

Например: Попробуйте просмотреть или пропинговать http://192.168.0.18 через 192.168.0.11, вы не сможете это сделать из-за мостовой сети.

Если это так, то используйте NAT-подключение к вашей виртуальной машине вместо моста и пропингуйте только что полученный IP-адрес, и я чувствую, что это должно работать.

0
ответ дан 10 February 2021 в 10:40

Другие вопросы по тегам:

Похожие вопросы: