Настройка виртуальных хостов на Nginx в CentOS 6
Centos, Cloud Server, VPS | Комментировать запись
Виртуальные хосты (virtual host) позволяют разместить несколько сайтов на одном выделенном сервере.
В терминологии Nginx виртуальные хосты также принято называть блоками server (server block), но термин Apache «виртуальный хост» более распространён.
Требования
Для выполнения руководства нужно предварительно установить веб-сервер Nginx:
- Добавьте репозиторий EPEL
su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'
- Установите Nginx
yum install nginx
Кроме того, для выполнения инструкций нужно указать доменное имя или IP-адрес сервера, чтобы иметь возможность протестировать настройку. В руководстве используется условный домен example.com; не забудьте указать в командах свой домен.
Если же у вас пока что нет заверенного доменного имени, вы можете протестировать настройку виртуального хоста при помощи фиктивных данных (см. раздел 6).
1: Создайте новый каталог
Сначала нужно создать каталог для хранения данных нового сайта.
В конфигурационном файле Nginx этот каталог называется Document Root. Добавьте в команду флаг –р, чтобы команда автоматически сгенерировала родительские каталоги.
sudo mkdir -p /var/www/example.com/public_html
2: Передайте права
Теперь нужно передать права на этот каталог пользователю, отвечающему за работу веб-сервера; в случае необходимости замените имя пользователя www своими данными.
sudo chown -R www:www /var/www/example.com/public_html
Кроме того нужно убедиться, что файлы в этом каталоге открыты для чтения:
sudo chmod 755 /var/www
3: Создайте страницу
Теперь в только что созданном каталоге нужно создать новый файл по имени index.html.
sudo vi /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.
sudo vi /etc/nginx/conf.d/virtual.conf
Файл виртуального хоста уже заполнен, но в нём нужно изменить некоторые параметры. В server name укажите свой домен или IP, а в location – root-каталог проекта.
#
# A virtual host using mix of IP-, name-, and port-based configuration
#
server {
listen 80;
# listen *:80;
server_name example.com;
location / {
root /var/www/example.com/public_html/;
index index.html index.htm;
}
}
Сохраните и закройте файл.
5: Перезапустите Nginx
В настройки веб-сервера было внесено множество изменений. Чтобы активировать их, перезапустите Nginx.
/etc/init.d/nginx restart
6: Настройка локальных хостов (опционально)
Если во время настройки вы использовали домен или IP-адрес сервера, пропустите этот раздел. Если же вы использовали фиктивный домен, следуйте данным инструкциям, чтобы проверить настройки. При этом сайт не будет находиться в открытом доступе в сети, он будет доступен только на локальной машине.
Перейдите на локальную систему.
Примечание: Для выполнения этого раздела нужен пароль администратора.
Откройте файл hosts:
nano /etc/hosts
В этот файл можно добавить данные локального хоста. Пока в этом файле находится строка, содержащая IP и server name, браузер будет выводить данные для виртуального хоста с этим 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
После проверки настроек рекомендуется удалить фиктивные данные из файла, чтобы в дальнейшем избежать путаницы.
7: Проверьте виртуальный хост в действии
Завершив настройку виртуального хоста, откройте его в браузере и убедитесь, что всё работает должным образом. Направьте браузер на домен или IP. На экране должна появиться страница с сообщением:
Success—You Have Set Up a Virtual Host
Заключение
Чтобы добавить ещё несколько виртуальных хостов, просто повторите все вышеописанные действия, указывая новый домен. Затем просто скопируйте и вставьте информацию о новом виртуальном хосте в конфигурационный файл nginx:
#
# A virtual host using mix of IP-, name-, and port-based configuration
#
server {
listen 80;
# listen *:80;
server_name example.com;
location / {
root /var/www/example.com/public_html/;
index index.html index.htm;
}
}
server {
listen 80;
# listen *:80;
server_name example.org;
location / {
root /var/www/example.org/public_html/;
index index.html index.htm;
}
}