Nginx: Настройка блоков server в Ubuntu 12.04 LTS

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

Виртуальные хосты используются для запуска нескольких сайтов на одном сервере. Веб-сервер Nginx называет такие хосты блоками server (Server Blocks). Тем не менее, в данном руководстве будет использоваться первый, более распространенный термин.

Требования

Для выполнения данного руководства необходим пользователь с повышенными привилегиями (не root). Чтобы получить инструкции по созданию такого пользователя, читайте руководство «Начальная настройка сервера Ubuntu 12.04». В данном руководстве такой пользователь называется  www.

Кроме того, веб-сервер Nginx должен быть установлен и готов к работе. Если это не так, загрузите его с помощью команды:

sudo apt-get install nginx

1: Создайте новый каталог

Первое, что нужно сделать, – это создать отдельный каталог для хранения информации сайта.

Этот каталог будет root-каталогом сайта. При помощи флага -p команда автоматически сгенерирует все родительские каталоги (т.е. каталоги высшего уровня) для нового каталога.

sudo mkdir -p /var/www/example.com/public_html

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

2: Передайте привилегии

Теперь нужно передать все права на каталог одному пользователю. Замените www-data в команде ниже правильным именем пользователя.

sudo chown -R www-data:www-data /var/www/example.com/public_html

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

sudo chmod 755 /var/www

Готово! Теперь привилегии установлены правильно.

3: Создайте страницу

На данном этапе нужно создать страницу по имени index.html в созданном ранее каталоге.

sudo nano /var/www/example.com/public_html/index.html

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

<html>
<head>
<title>www.example.com</title>
</head>
<body>
<h1>Success: You Have Set Up a Virtual Host</h1>
</body>
</html>

Сохраните изменения и закройте файл.

4: Создайте новый файл виртуального хоста

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

Nginx предоставляет макет этого файла в каталоге sites-available (/etc/nginx/sites-available), текст которого нужно просто скопировать в новый файл:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

5: Настройте виртуальный хост

Откройте новый файл хоста и просмотрите его содержимое.

sudo nano /etc/nginx/sites-available/example.com

В код данного файла нужно внести некоторые изменения.

server {
listen   80; ## listen for ipv4; this line is default and implied
#listen   [::]:80 default ipv6only=on; ## listen for ipv6
root /var/www/example.com/public_html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name example.com;
}

Данный код:

  • раскомментирует listen 80, направляя на сайт весь трафик, поступающий через этот порт;
  • изменяет расширение root, указывая каталог, созданный в разделе 1. Если такой каталог указан неверно или его не существует, настроить виртуальный хост будет невозможно;
  • изменяет server name, внося доменное имя или IP-адрес сервера.

Больше данный файл не нуждается в редактировании. Сохраните и закройте его.

Осталось только активировать хост, создав символическую ссылку между каталогами sites-available и sites-enabled. В Apache для этого есть команда a2ensite, но Nginx не имеет ей аналога. Тем не менее, команда Nginx тоже не очень сложная.

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

Во избежание ошибки «conflicting server name error»,  также чтобы убедиться, что сайт отображает правильную информацию, удалите блок server по умолчанию.

sudo rm /etc/nginx/sites-enabled/default

6: Перезапустите Nginx

В настройки веб-сервера было внесено множество изменений. Перезапустите Nginx, чтобы активировать новые настройки:

sudo service nginx restart

7: Настройте локальный хост (дополнительно)

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

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

На данном этапе понадобится пароль администратора компьютера; в противном случае используйте доменное имя для проверки виртуальных хостов.

В системах Mac или Linux войдите как root-пользователь (su) и откройте файл hosts:

nano /etc/hosts

При использовании Windows обратитесь к сайту Microsoft.

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

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
#Virtual Hosts
12.34.56.789    www.example.com

Хотя во избежание путаницы может понадобиться удалить эти адреса из папки локальных хостов.

8: Результаты

Завершив настройку виртуального хоста, проверьте его работу в сети. Для этого наберите доменное имя или IP в браузере (например: http://12.34.56.789).

Чтобы создать еще несколько виртуальных хостов, просто повторите данное руководство, используя новые данные.

Читайте также

Когда виртуальные хосты настроены и готовы к работе, можно создать сертификат SSL в nginx или установить FTP-сервер.

Tags: , , , , ,

Добавить комментарий