Как установить серверные блоки Nginx (виртуальные хосты) в Ubuntu 18.04 LTS

12 set 2022 3 min di lettura
Как установить серверные блоки Nginx (виртуальные хосты) в Ubuntu 18.04 LTS
Indice dei contenuti

Введение

Nginx Server Blocks позволяет запускать более одного веб-сайта на одном компьютере. С помощью Server Blocks вы можете указать корень документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные SSL-сертификаты для каждого сайта и многое другое.

В этой статье мы предоставим подробные инструкции по настройке блока сервера Nginx в Ubuntu 18.04.

Руководство по настройке нескольких серверных блоков с помощью Nginx в Ubuntu 18.04 можно найти в этом руководстве.

Предпосылки

Убедитесь, что вы выполнили следующие предварительные условия, прежде чем продолжить работу с учебным пособием:

  • У вас есть доменное имя, которое указывает на IP-адрес вашего общедоступного сервера. Мы будем использовать example.com.
  • Вы вошли в систему как пользователь с привилегиями sudo.

В некоторых руководствах вы можете увидеть, что Server Blocks называются Virtual host. Термин виртуальный хост обычно используется для Apache.

Установите Nginx

Пакет Nginx включен в репозитории Ubuntu 18.04 по умолчанию.

sudo apt update
sudo apt install nginx

Служба Nginx запустится автоматически в конце процесса установки.Чтобы проверить тип статуса:

sudo systemctl status nginx

Вывод будет выглядеть следующим образом:

 nginx.service - A high performance web server and a reverse proxy server
 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
 Active: active (running) since Mon 2019-11-18 22:54:20 CET; 9s ago

Настроить брандмауэр

Предполагая, что вы используете UFW для управления брандмауэром, вам необходимо открыть порты HTTP ( 80 ) и HTTPS ( 443 ). Вы можете сделать это, включив профиль «Nginx Full», который включает правила для обоих портов:

sudo ufw allow 'Nginx Full'

Чтобы проверить тип статуса Nginx:

sudo ufw status

Вывод будет выглядеть следующим образом:

Status: active

 To Action From
 -- ------ ----
 22/tcp ALLOW Anywhere
 Nginx Full ALLOW Anywhere
 22/tcp (v6) ALLOW Anywhere (v6)
 Nginx Full (v6) ALLOW Anywhere (v6)

Создайте структуру каталогов для блока сервера

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

Мы будем использовать следующую структуру каталогов:

/var/www/├── domain1.com
 │  └── public_html
 ├── domain2.com
 │  └── public_html
 ├── domain3.com
 │  └── public_html

По сути, мы создадим отдельный каталог для каждого домена, который мы хотим разместить на нашем сервере, в каталоге /var/www. В каждом из этих каталогов мы создадим каталог public_html, в котором будут храниться файлы веб-сайта домена.

Давайте создадим корневой каталог для нашего домена example.com:

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

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

Откройте файл/создайте файл в вашем редакторе, в этом уроке мы будем использовать nano:

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

Вставьте следующие строки кода:

<!DOCTYPE html>
 <html lang="en" dir="ltr">
 <head>
 <meta charset="utf-8">
 <title>Welcome to example.com</title>
 </head>
 <body>
 <h1>Success! example.com home page!</h1>
 </body>
 </html>

В этом примере мы запускаем команды от имени пользователя sudo, а вновь созданные файлы и каталоги принадлежат пользователю root.

Чтобы избежать проблем с авторизацией, смените владельца корневого каталога доменных документов на пользователя Nginx ( www-data ) с помощью команды chown:

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

Создайте серверный блок

По умолчанию в системах Ubuntu файлы конфигурации блоков сервера Nginx хранятся в каталоге /etc/nginx/sites-available, которые включаются через символические ссылки на каталог /etc/nginx/sites-enabled/.

Откройте редактор и создайте следующий файл блокировки сервера:

sudo nano /etc/nginx/sites-available/example.com
server {
 listen 80;
 listen [::]:80;

 root /var/www/example.com/public_html;

 index index.html;

 server_name example.com www.example.com;

 access_log /var/log/nginx/example.com.access.log;
 error_log /var/log/nginx/example.com.error.log;

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

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

Чтобы включить новый файл блокировки сервера, создайте символическую ссылку из файла на каталог с sites-enabled, который Nginx читает при запуске:

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

Проверьте конфигурацию Nginx на правильность синтаксиса:

sudo nginx -t

Если ошибок нет, вывод будет выглядеть так:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx, чтобы изменения вступили в силу:

sudo systemctl restart nginx

Наконец, чтобы убедиться, что серверный блок работает должным образом, откройте свой адрес http://example.com в выбранном вами браузере, и вы увидите примерное сообщение, которое мы создали в файле index.html нашего серверного блока Nginx.

Вывод

Вы узнали, как создать конфигурацию блока сервера Nginx для размещения домена на одном сервере Ubuntu. Вы можете повторить шаги, описанные выше, и создать дополнительные серверные блоки для всех ваших доменов.

Если вы хотите защитить свой веб-сайт с помощью бесплатного SSL-сертификата LetsEncrypt, вы можете ознакомиться со следующим руководством: Как установить Let's Encrypt для Nginx в Ubuntu 18.04 LTS.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.