Поиск по сайту:

Как настроить блоки сервера Nginx в Ubuntu 18.04 LTS

В нашем предыдущем руководстве мы обсуждали, как настроить виртуальные хосты Apache в Ubuntu 18.04 LTS. Сегодня в этом руководстве мы научимся настраивать серверные блоки Nginx в Ubuntu 18.04. Блоки сервера аналогичны виртуальным хостам в Apache, которые позволяют размещать несколько веб-сайтов/доменов на одном сервере. IP-адрес моего тестового окна — 192.168.225.24, а имя хоста — ubuntuserver.

Настройка блоков сервера Nginx в Ubuntu 18.04 LTS

Убедитесь, что вы обновили свою систему Ubuntu до последней версии.

sudo apt-get update

1. Установите веб-сервер Nginx 

Чтобы установить веб-сервер Nginx в Ubuntu, запустите:

sudo apt-get install nginx

После установки Nginx проверьте, работает ли он, просмотрев тестовую страницу nginx в браузере.

Откройте веб-браузер и укажите в нем адрес http://IP_Address или http://localhost. Вы должны увидеть страницу, как показано ниже.

Хороший! Веб-сервер Nginx запущен и работает!

2. Создайте веб-каталог для каждого хоста

Я собираюсь создать два блока Сервера, а именно ostechnix1.lan и ostechnix2.lan.

Давайте создадим каталог для первого блока сервера ostechnix1.lan. Этот каталог необходим для хранения данных наших серверных блоков.

Для этого введите:

sudo mkdir -p /var/www/html/ostechnix1.lan/public_html

Аналогичным образом создайте каталог для второго блока сервера ostechnix2.lan, как показано ниже.

sudo mkdir -p /var/www/html/ostechnix2.lan/public_html

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

Для этого запустите:

sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html

Здесь $USER относится к текущему вошедшему в систему пользователю.

Затем установите права чтения для корневого каталога Nginx, то есть /var/www/html/, с помощью команды:

sudo chmod -R 755 /var/www/html/

Мы делаем это потому, что для каждого блока сервера мы уже создали отдельный каталог для хранения их данных. Поэтому мы сделали корневой каталог Nginx доступным только для чтения для всех пользователей, кроме пользователя root.

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

3. Создайте демонстрационные веб-страницы для каждого хоста

Давайте создадим образец страницы для сайта ostechnix1.lan. Для этого запустите:

sudo vi /var/www/html/ostechnix1.lan/public_html/index.html

Добавьте в него следующие строки:

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix1.lan website</h1>
 </body>
</html>

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

Аналогично создайте образец страницы для сайта ostechnix2.lan:

sudo vi /var/www/html/ostechnix2.lan/public_html/index.html

Добавьте в него следующие строки:

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix2.lan website</h1>
 </body>
</html>

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

4. Создайте файл конфигурации для каждого хоста

Далее нам нужно создать файлы конфигурации для каждого серверного блока. Сначала давайте сделаем это для сайта ostechnix1.lan.

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

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ostechnix1.lan.conf
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ostechnix2.lan.conf

Затем отредактируйте файл ostechnix.lan1.conf:

sudo vi /etc/nginx/sites-available/ostechnix1.lan.conf

Внесите необходимые изменения в директивы server_name и root, чтобы они соответствовали первому имени домена. Все изменения показаны ниже жирным шрифтом.

Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#
Note: You should disable gzip for SSL traffic.
See: https://bugs.debian.org/773332
#
Read up on ssl_ciphers to ensure a secure configuration.
See: https://bugs.debian.org/765782
#
Self signed certs generated by the ssl-cert package
Don't use them in a production server!
#
include snippets/snakeoil.conf;

root /var/www/html/ostechnix1.lan/public_html;

Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name ostechnix1.lan www.ostechnix1.lan;

location / {
First attempt to serve request as file, then
as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

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

Затем отредактируйте файл ostechnix2.lan.conf:

sudo vi /etc/nginx/sites-available/ostechnix2.lan.conf

Внесите необходимые изменения в директивы server_name и root, чтобы они отразились на втором имени домена. Все изменения показаны жирным шрифтом.

Default server configuration
#
server {
listen 80;
listen [::]:80;

SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#
Note: You should disable gzip for SSL traffic.
See: https://bugs.debian.org/773332
#
Read up on ssl_ciphers to ensure a secure configuration.
See: https://bugs.debian.org/765782
#
Self signed certs generated by the ssl-cert package
Don't use them in a production server!
#
include snippets/snakeoil.conf;

root /var/www/html/ostechnix2.lan/public_html;

Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name ostechnix2.lan www.ostechnix2.lan;

location / {
First attempt to serve request as file, then
as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

Как вы могли заметить, в приведенной выше конфигурации я внес еще одно изменение. Я удалил строку default_server в директивах listen 80 ; и listen [::]:80 ; во втором блоке сервера (ostechnix2.lan ) файл. Поскольку мы уже использовали строку default_server в первом блоке сервера, поэтому мы удалили ее из второго файла, чтобы избежать конфликта.

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

5. Включить блокировку сервера Nginx

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

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/ostechnix1.lan.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/ostechnix2.lan.conf /etc/nginx/sites-enabled/

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

sudo systemctl restart nginx

Вот и все. Мы успешно настроили серверные блоки в Nginx. Давайте продолжим и проверим, работают они или нет.

6. Тестовые блоки сервера Nginx

Откройте файл /etc/hosts в любом редакторе:

sudo vi /etc/hosts

Добавьте все свои виртуальные веб-сайты/домены один за другим, как показано ниже.

[...]
192.168.225.24   ostechnix1.lan
192.168.225.24   ostechnix2.lan
[...]

Обратите внимание: если вы хотите получить доступ к блокам сервера из любой удаленной системы, вам необходимо добавить указанные выше строки в файл /etc/hosts каждой удаленной системы. Сохраните и закройте файл.

Откройте веб-браузер и укажите в нем адрес http://ostechnix1.lan или http://ostechnix2.lan.

Тестовая страница ostechnix1.lan:

Тестовая страница ostechnix2.lan:

Поздравляем! Теперь вы можете получить доступ ко всем своим веб-сайтам/доменам. Отныне вы можете загружать данные и обслуживать их с разных веб-сайтов.

Статьи по данной тематике