Несколько сайтов на nginx, один IP

Так что я использую цифровой океан и nginx. Я хочу разместить несколько сайтов (мои проекты), но не хочу покупать домен для каждого из них.

Есть ли способ разместить несколько сайтов на nginx и digital ocean при доступе к ним с помощью этого ip?

14
задан 2 May 2016 в 15:37

1 ответ

Существует два способа достигнуть этого. Или Вы делаете все IP-адресом с местоположениями подпапки, или необходимо будет купить один домен и затем иметь несколько субдоменов на том домене (субдомены ничего не должны стоить, если Вы покупаете домен, но согласовываете с Вашим регистратором).

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


Один IP, много подходов подпапок, без доменного имени

ЗАМЕТЬТЕ! У нас нет информации о Ваших проектах, Вы продолжаете работать. Мы должны знать больше, чтобы определить, можно ли сделать этот подход, поскольку много веб-платформ не будут работать без истинного доменного имени, связанного с ним.


ПРЕДУПРЕЖДЕНИЕ: В продолжающемся тестировании этих примеров было обнаружено, что "Один домен, много подкаталогов" подход не берут любезно к проксирующим реверс данным к бэкенду, поскольку требуемый URI будет включать подкаталоги в URI; это могло бы заставить серверы бэкэнда иметь проблемы при поведении правильно.

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

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

Создать /etc/nginx/sites-available/my-projects со следующим (используют это в качестве шаблона/руководства - он принимает три проекта со статическим HTML и никакие динамические веб-приложения в PHP или Python или подобный, и можно скопировать отдельные блоки местоположения и сделать новые местоположения соответственно; это также предполагает, что Ваш IP сервера 1.2.3.4).

server {
    listen 80 default_server;

    server_name 1.2.3.4;

    location / {
        return 410;  # Default root of site won't exist.
    }

    location /proj1/ {
        alias /var/www/proj1;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }

    location /proj2/ {
        alias /var/www/proj2;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }

    location /proj3/ {
        alias /var/www/proj3;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }
}

Теперь мы заменяем конфигурацию по умолчанию (удалите ее), и добавьте наш:

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/my-projects /etc/nginx/sites-enabled

И затем перезапуск nginx сервис:

# If on 14.04, use this:
sudo service nginx restart

# If on 15.10 or newer, use this:
sudo systemctl restart nginx

Один домен, несколько подходов субдоменов.

Этот раздел ответа предполагает, что у Вас есть один домен и несколько субдоменов там. Если у Вас нет этого, разъясните это в своем вопросе

С каждым nginx server {} блок в конфигурации, необходимо будет определить имя сервера и вероятно установить четвертый блок сервера как 'выгоду все' для других запросов.

Пример: у Меня есть три проекта, proj1, proj2, proj3. Мне назвали домен evil-projects.net (ПРИМЕЧАНИЕ: не существует действительно). Я хочу три различных субдомена, один для каждого nginx конфигурация, которая укажет на один проект на каждого. Мой сервер находится в 1.2.3.4, и он будет служить всем сайтам.

С вышеупомянутым сценарием у нас есть две части: домены и субдомены и конфигурация сервера.

(1): Конфигурация DNS

Настройте свой DNS в Вашем хосте, таким образом, что следующее верно с записями DNS:

evil-projects.net  IN A  1.2.3.4
proj1.evil-projects.net  IN A  1.2.3.4
proj2.evil-projects.net  IN A  1.2.3.4
proj3.evil-projects.net  IN A  1.2.3.4

(2): Конфигурация NGINX в сервере (1.2.3.4)

Теперь для Вашего nginx конфигурации. Я предполагаю, что Вы собираетесь иметь значение по умолчанию nginx установки и пакеты из Репозиториев (я собираюсь использовать 14.04 в качестве основного примера). У нас будет четыре конфигурационных файла помещенными в /etc/nginx/sites-available, сначала. Вы, возможно, должны использовать sudo при создании этих файлов, поскольку рассматриваемая папка принадлежит root.

/etc/nginx/sites-available/catch-all - это будет 'выгодой все' для любых недопустимых доменов. Мне нравится возвращаться, ошибка HTTP кодируют 410 (УВЕДЕННЫЙ).

server {
    listen 80 default_server;

    server_name _;

    return 410;
}

Затем, мы настраиваем конфигурацию для Ваших сайтов/проектов. Я собираюсь предположить, что они - все статические файлы, все же. Каждый из них подразумевает, что у Вас есть различные веб-каталоги для каждого проекта на сервере также (различные 'корни документа').

/etc/nginx/sites-available/proj1.evil-projects.net:

server {
    listen 80;

    server_name proj1.evil-projects.net;

    root /var/www/proj1;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

/etc/nginx/sites-available/proj2.evil-projects.net:

server {
    listen 80;

    server_name proj2.evil-projects.net;

    root /var/www/proj2;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

/etc/nginx/sites-available/proj3.evil-projects.net:

server {
    listen 80;

    server_name proj3.evil-projects.net;

    root /var/www/proj3;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Мы затем должны удалить конфигурацию 'по умолчанию' из /etc/nginx/sites-enabled, и добавьте наше собственное. Снова, sudo необходим здесь.

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/proj1.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj2.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj3.evil-projects.net /etc/nginx/sites-enabled/

И затем мы перезапускаем nginx процесс:

# If on 14.04, use this:
sudo service nginx restart

# If on 15.04 or newer, use this:
sudo systemctl restart nginx

После того как DNS распространяет, сайты будут работать, как они должны.

17
ответ дан 3 May 2016 в 01:37
  • 1
    @Dragos75, я думаю, что существует полезная информация в:-журнала информации начальной загрузки) /dev/sda3 ends after the last sector of /dev/sda, указывает на поврежденную таблицу разделов, которая могла бы создать проблемы. Возможно, Ваши наблюдения в исходном вопросе о RAID подключены к этой проблеме. у меня нет опыта RAID, таким образом, я не могу помочь Вам, если существует RAID. , С другой стороны, если нет RAID, можно ли сказать мне о втором диске, /dev/sdb? – sudodus 8 October 2017 в 05:14

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

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