Введение
Nginx Server Blocks позволяет запускать более одного веб-сайта на одном компьютере. С помощью Server Blocks вы можете указать корень документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные SSL-сертификаты для каждого сайта и многое другое.
В этой статье мы предоставим подробные инструкции по настройке блока сервера Nginx на Ubuntu 20.04 LTS Focal Fossa.
Руководство по настройке нескольких серверных блоков с помощью Nginx в Ubuntu 20.04 можно найти в этом руководстве.
Предпосылки
Убедитесь, что вы выполнили следующие предварительные условия, прежде чем продолжить работу с учебным пособием:
- У вас есть доменное имя, которое указывает на IP-адрес вашего общедоступного сервера. В этом уроке мы будем использовать
example.com
. - Вы вошли в систему как пользователь с привилегиями sudo.
Если вы хотите установить Nginx на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установите 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 2020-05-04 23:59:35 CEST; 9s ago
Docs: man:nginx(8)
Main PID: 67793 (nginx)
Tasks: 2 (limit: 2286)
Memory: 4.1M
CGroup: /system.slice/nginx.service
├─67793 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─67794 nginx: worker process
Настроить брандмауэр
Предполагая, что вы используете 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. Вы можете повторить шаги, описанные выше, и создать дополнительные серверные блоки для всех ваших доменов.