Nginx: Настройка блоков server в Ubuntu 12.04 LTS
Ubuntu, VPS | Комментировать запись
Что такое виртуальные хосты?
Виртуальные хосты используются для запуска нескольких сайтов на одном сервере. Веб-сервер 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: Linux, NGINX, Server Block, Ubuntu, Ubuntu 12.04 LTS, VPS