Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: HOWTO: Ubuntu - Nginx виртуальные хосты, часть 1  (Прочитано 33618 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Итак у нас установлен Nginx (с помощью менеджера пакетов или из исходников), мы в состоянии обслуживать несколько доменов с помощью виртуальных хостов (Virtual Hosts).

Создание макета

Давайте создадим основной макет для каждого домена. В вашем домашнем каталоге создадим папку "public_html":

mkdir /home/demo/public_html
Теперь для каждого домена, мы хотим (я использую примеры domain1.com и domain2.com) создать папку со стандартным набором вложенных папок:

mkdir -p /home/demo/public_html/domain1.com/{public,private,log,backup}
и

mkdir -p /home/demo/public_html/domain2.com/{public,private,log,backup}
Это создаст папки public, private, log и backup для каждого нашего домена ((domain1.com и domain2.com).

index.html

Содержание public папки, естественнно, вам решать, но для этого примера я буду использовать очень простой HTML-файл, чтобы мы смогли проверить работу виртуальных хостов.

Так что для каждого домена:

nano /home/demo/public_html/domain1.com/public/index.html
Введите что-то подобное в файл:

<html>
  <head>
    <title>domain1.com</title>
  </head>
  <body>
    <h1>domain1.com</h1>
  </body>
</html>

Повторите процесс, так что у вас есть аналогичный файл для domain2.com (не забудьте изменить содержание index.html  чтобы отображал domain2.com а не domain1.com).

Макет виртуальных хостов

Вам нужно следовать согласно макету в стиле 'Debian' (используя папки 'sites-available' и 'sites-enabled') либо установлены с помощью менеджера пакетов, либо через источник.

Таким образом, мы будем использовать этот макет всегда при создании виртуальных хостов.

Виртуальный хост

Итак поехали дальше, создадим виртуальный хост файл для domain1:

sudo nano /etc/nginx/sites-available/domain1.com
Не забудьте настроить пути в соответствии вашей установки. Поэтому потребуется установка из исходников:

Цитировать
sudo nano /usr/local/nginx/sites-available/domain1.com

Содержимое будет выглядеть так:

server {

            listen   80;
            server_name  www.domain1.com;
            rewrite ^/(.*) http://domain1.com/$1 permanent;

           }


server {

            listen   80;
            server_name domain1.com;

            access_log /home/demo/public_html/domain1.com/log/access.log;
            error_log /home/demo/public_html/domain1.com/log/error.log;

            location / {

                        root   /home/demo/public_html/domain1.com/public/;
                        index  index.html;

                        }

            }

Примечание: Этот пример виртуального хоста (Vhost) довольно базовый. Однако следующая статья Nginx виртуальных хостов будет содержать подробную информацию о многих других доступных параметрах.
Первый модуль сервера в файле простых правил перезаписи, которые перенаправляют посетителей от www.domain1.com к domain1.com.
Можно, конечно, сделать наоборот, так как вы считаете нужным.
Второй модуль сервера содержит основную информацию, включая 'server_name' являющийся доменным именем, которое будет работать.
Затем он определяет log для удобства проведения анализа и, наконец, устанавливает корневой сервер и индексный файл.
Как я говорил, это очень простая конфигурация на данном этапе.

sites-enabled

Последний шаг конфигурации является "розрешение" (enable) нашего сайта.

Это делается с помощью симлинка в 'sites-enabled' папке следующим образом:

sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/domain1.com
Опять же, в зависимости от того, как вы установили Nginx, вам может понадобиться настроить пути:

sudo ln -s /usr/local/nginx/sites-available/domain1.com /usr/local/nginx/sites-enabled/domain1.com

Перезагрузка Nginx

Несмотря на перезагрузку для скрипта инициализации Nginx, он не всегда работает, как ожидалось и не может способствовать любым изменениям, которые вы сделали.
Таким образом, я рекомендую остановку и запуск, такой подход, а не простую перезагрузку:

sudo /etc/init.d/nginx stop
...
sudo /etc/init.d/nginx start

Навигация

Для проверки домена без создания зоны DNS и записи(ей) на некоторых интернет namserver(s), я изменил '/etc/hosts' файл на моем локальном компьютере включив некоторые элементы отображения 'domain1.com' и т.д. для демо серверов внешний IP:

127.0.0.1    localhost
...

# entries related to the demo server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

Можете добавить аналогичные записи в ваш 'hosts' файл, хотя его местонахождение будут варьироваться в зависимости от того, какая ОС используется на локальном компьютере (используйте Google Search)
Примечание: записи в 'hosts' файле необходимо будет до начала испытаний и использования живых DNS зон и записей, созданных в интернет неймсерверах. Неспособность удалить их, вероятно, приведет к путанице с вашей стороны и неточных испытаний новых или измененных записей публичных DNS.
С такими изменениями, внесенными в целях тестирования, можно перейти на ваш сайт в веб-браузер на вашем локальном компьютере:



Отлично.

Финиш и повтор

Все, что нужно сделать для вашего следующего виртуального хоста (domain2.com в данном примере), это повторить процесс заново.
Я знаю, я говорю об этом часто, но не забудьте настроить все пути уставки Nginx.
Таким образом создадим виртуальный хост-файл:

sudo nano /etc/nginx/sites-available/domain2.com
Введите сведения, как показано выше, но и для domain2.com, а затем создадим симлинк в папке 'sites-enabled' вот так:

sudo ln -s /etc/nginx/sites-available/domain2.com /etc/nginx/sites-enabled/domain2.com

Перезагружаем Nginx:

sudo /etc/init.d/nginx stop
...
sudo /etc/init.d/nginx start

Логи

Помните мы определили пользовательские папки, для логов домена?
Ну, давайте проверим если они есть:

ls /home/demo/public_html/domain1.com/log/
...
access.log  error.log

Отлично, все работает так, как мы ожидали, и у нас есть логи домена в красивом и удобном месте.

Сводка

Настройка виртуальных хостов с Nginx это простой процесс, используя папки 'sites-available' и 'sites-enabled'.
Хотя пример здесь вполне базисный, я надеюсь вы увидили что борьба с Nginx синтаксисом и конфигурацией, не так уж сложна.



PS: перевод с ангийского, если найдёте ошибки перевода - сообщите.


Источник
« Последнее редактирование: 13 Октября 2009, 14:49:01 от Baggio »
Мой сайт http://linux-bsd.pp.ua

 

Страница сгенерирована за 0.054 секунд. Запросов: 24.