Как настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu 20.04

Как настроить Nginx в качестве веб-сервера и обратного прокси-сервера для Apache на одном сервере Ubuntu 20.04 Хостинг

Настраиваем Firewall

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

Для начала нам нужно вывести список названий всех приложений с профилем ufw:

Вы увидите такой список:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Как вы видите, существует три возможных профиля для Nginx:

Nginx Full: профиль открывает два порта – 80 (обычный, незашифрованный веб-трафик) и 443 (TLS/SSL зашифрованный трафик)
Nginx HTTP: профиль открывает только порт 80
Nginx HTTPS: профиль открывает только порт 443

Рекомендуется включать наиболее ограниченный профиль, который позволит пропускать только тот трафик, который вы настроили. Так как на данный момент SSL-протокол еще не настроен, нам нужно открыть только порт 80 для обычного трафика.

Для этого введите команду:

$ sudo ufw allow 'Nginx HTTP'

И подтвердите изменения:

Вы увидите следующие данные, касающиеся разрешенного трафика:

Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Настройка mod_fastcgi

В данном разделе нужно будет настроить модуль mod_fastcgi для корректной обработки веб-сервером страниц, написанных на PHP.

Сначала необходимо будет отключить модуль mod_php:

$ sudo a2dismod php7.4
Отключение mod_php

После этого необходимо включить mod_action, и сохранив существующий файл FastCGI под другим именем, и создайте новый fastcgi.conf:

$ sudo a2enmod actions
$ cd /etc/apache2/mods-enabled
$ sudo mv fastcgi.conf fastcgi_old.conf
$ sudo nano fastcgi.conf

Следующий текст вставьте в созданный файл:

<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.4-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>

Закройте файл сохранив изменения и протестируйте Apache на корректность синтаксиса:

$ sudo apachectl -t

Нижеуказанную ошибку следует проигнорировать:

Ошибка. Её пока нужно пропустить.

Главное, что проверка сообщила, что Syntax OK. Это значит, что необходимо перезапустить сервис Apache:

$ sudo systemctl reload apache2

Далее, в папке /var/www/html нужно создать файл, который будет открывать страницу конфигурации PHP:

$ cd /var/www/html
$ sudo nano info.php

В этот файл необходимо вставить следующую фунцию:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Теперь выполните настройку брандмауэра вашего VPS, которая позволит открыть доступ к нему по порту 8080:

$ sudo ufw allow 8080

А также, включите на UFW разрешение для Apache:

$ sudo ufw allow "Apache Full"

Проверьте статус, в котором находится ваш UFW:

$ sudo ufw status
Брандмауэр
Страница phpinfo()
Страница конфигурации PHP
Конфигурация PHP

Команды управления Nginx-сервером

Чтобы остановить web-сервер, вводим:

$ sudo systemctl stop nginx

Для старта используем команду:

$ sudo systemctl start nginx

Для перезапуска Nginx после остановки, вводим:

$ sudo systemctl restart nginx

Во время загрузки Ubuntu, сервер Nginx стартует автоматически по умолчанию. Отключить запуск по умолчанию можно следующим образом:

$ sudo systemctl disable nginx

Чтобы при внесении изменений в конфигурации веб-сервера, его можно было перезагрузить, не теряя соединений. Для этого вводим команду:

$ sudo systemctl reload nginx

Для возобновления запуска Nginx при старте вводим:

$ sudo systemctl enable nginx

Настройки блоков server

$ sudo mkdir -p /var/www/primer.ru/html
$ sudo mkdir -p /var/www/primer2.ru/html
$ sudo chown -R $USER:$USER /var/www/primer.ru/html
$ sudo chown -R $USER:$USER /var/www/primer2.ru/html

Теперь перейдем к созданию страниц для сайтов:

$ nano /var/www/primer.ru/html/index.html
$ nano /var/www/primer2.ru/html/index.html

Мы рекомендуем Вам скопировать в созданные файлы пример страницы сайта, который Вы видите ниже:

<html>
<head>
<title>Добро пожаловать на primer.ru!</title>
</head>
<body>
<h1>Все отлично! Блок server сайта primer.ru работает корректно.</h1>
</body>
</html>

Следующим шагом будет создание блоков server. Для этого выполните следующую команду:

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/primer.ru

И затем откройте этот файл, используя root-права, и добавьте следующий текст:

server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}

Настройки, которые Вы здесь видите, имеют следующие функции:

  • listen — определяет IP-адрес и порт, а также может указывать путь для UNIX-сокета;
  • root — определяет, какой каталог будет использоваться для запросов;
  • index — задает, какие файлы будут использоваться в качестве индекса;
  • server_name — имя виртуального сервера;
  • location — задает конфигурацию в зависимости от URI-запроса. Этот параметр может быть задан как префиксной строкой, так и регулярным выражением. В данном случае try_files обозначает, что для обработки запроса будет использоваться первый найденный файл ($uri); обозначить каталог Вы можете при помощи косой черты ($uri/); если же ни один из данных файлов не будет найден, то идет перенаправление на последний параметр.

В данном файле Вам нужно отредактировать следующие настройки.
В root запишите путь к каталогу с Вашим сайтом:

root /var/www/primer.ru/html;

Также Вы меняете server_name, при этом нужно обязательно указать доменное имя своего сайта:

server_name primer.ru www.primer.ru;
$ sudo ln -s /etc/nginx/sites-available/primer.ru /etc/nginx/sites-enabled/

Для того, чтобы предотвратить конфликт нового блока с блоком по умолчанию (default), его необходимо отключить:

$ sudo rm /etc/nginx/sites-enabled/default

А затем раскомментировать строку (убрать спецсимвол) server_names_hash_bucket_size 64; в файле /etc/nginx/nginx.conf.

Далее давайте перейдем к настройкам проксирования. Размер буфера для проксируемых запросов должен быть не меньше, чем ожидаемый размер ответа от сервера:

proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

Следующим шагом необходимо установить кодировку отдачи:

Включите SSI и установите, чтобы SSI-переменные резервировали не более 1 Кбайта:

ssi on;
ssi_value_length 1024;
server { location / { root /data/www; }
location /images/ { root /data; }
}

В данном случае первый блок location имеет путь для запросов (root) — конечный путь к запрашиваемому файлу будет формироваться путем добавления URI из запроса к пути из директивы root. При совпадении этого пути в нескольких блоках location будет выбран путь, имеющий самый длинный префикс (он задается косой чертой “/”).
Второй блок, который мы настроили, дает совпадение с запросами, начинающимися с /images/.
Также блок location используется при настройке прокси-сервера. Для этого в первом блоке нужно прописать параметры директивы proxy_pass, а именно протокол и адрес проксируемого сервера:

location / { proxy_pass http://localhost:8080; }

Вы можете использовать этот параметр для задания пути к веб-серверу Apache на порту 9999:

location / {
proxy_pass 127.0.0.1:9999;
}

При этом при использовании NGINX как прокси-сервера Вы можете задать множество разных параметров, к примеру, proxy_read_timeout, который определяет таймаут при чтении ответа прокси-сервера, или proxy_send_timeout, который определяет таймаут при передаче запроса.

Вы также можете настроить NGINX так, чтобы он перенаправлял запросы на FastCGI-серверы. Для этого вместо директивы proxy_pass Вам нужно использовать директиву fastcgi_pass, а также директиву fastcgi_param, в которой задается параметр, который затем будет передаваться FastCGI-серверу:

server { location / { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; }

В этом случае файл SCRIPT_FILENAME определяет имя скрипта, а QUERY_STRING — параметры запроса.

$ sudo service nginx restart

Настройка веб-сервера Nginx

Здесь важно понимать, что Nginx использует интерфейс межсетевого экрана Uncomplicated FireWall (UFW), поэтому первым делом нужно произвести настройку брандмауэра Ubuntu. Доступные приложения, о которых знает UFW, можно увидеть набрав в командной строке:

$ sudo ufw app list
Список приложений, известных UFW

В нашем случае имеет смысл разрешить трафик HTTP. Для этого необходимо ввести:

$ sudo ufw allow 'Nginx HTTP'

Не будет лишним увидеть статус UFW после произведённых манипуляций:

$ sudo ufw status
Проверка статуса UFW

И, наконец, чтобы проверить статус установленного веб-сервера, используйте следующую инструкцию:

$ systemctl status nginx
Статус Nginx
IP-адрес VPS

Если всё сделано верно, браузер должен показать стартовую страницу Nginx:

Стартовая страница Nginx

Подготовка

Перед началом установки Nginx заходим в ОС под пользователем root, и создаем новый аккаунт с расширенными привилегиями sudo.

Вводим следующую команду*:

adduser host

* Здесь «host» – имя пользователя, под которым будем работать.

Далее вбиваем свою информацию об аккаунте или принимаем настройки по умолчанию, нажав «Enter».

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

Если вход выполняется под паролем, то подключиться к новому пользователю можно по SSH*:

ssh host@194.61.0.6

*IP сервера в примере () следует заменить на актуальный.

Когда вход в учетную запись осуществляется при помощи SSH-ключей, тогда их необходимо скопировать в созданный аккаунт. Для этого нужно следовать следующему алгоритму:

  1. Открыть терминал и ввести команду:
rsync --archive --chown= host: host ~/.ssh /home/ host
  1. Добавить созданного пользователя в группу sudo:
usermod -aG sudo  host
  1. Авторизоваться под новым пользователем.

Инсталляцию будем выполнять прямо из репозитория Ubuntu, посредством пакетного менеджера apt:

$ sudo apt update
$ sudo apt install nginx

По завершению исполнения команд, обновление и установка Nginx на сервере будет окончена.

Настройка UFW

Перед предоставлением доступа к сервису, следует настроить файрвол.

Для просмотра приложений, с которыми будет взаимодействовать UFW, вводим следующую команду:

$ sudo ufw app list

Будет выведена следующая информация:

Установка и настройка Nginx на Ubuntu

Это означает, что UFW может работать с тремя вариантами протоколов веб-сервера:

  1. Full – открыты два порта (80 и 443).
  2. HTTP – открыт только 80 порт.
  3. HTTPS – открывается только 443 порт.

Пока не настроен SSL протокол, открываем 80 порт. Вводим команды:

$ sudo ufw allow 'Nginx HTTP'

Чтобы не потерять доступ по SSH, вводим команду:

$ sudo ufw allow ssh
$ sudo ufw enable

Будет выведено предупреждение:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Нужно согласиться (нажать «y»).

$ sudo ufw status

На экране будет выведено:

Status: active
To                               Action             From
--                               ------     ----
Nginx HTTP               ALLOW           Anywhere
22/tcp                         ALLOW           Anywhere
Nginx HTTP (v6)                  ALLOW           Anywhere (v6)
22/tcp (v6)                  ALLOW           Anywhere (v6)

HTTP протокол открыт.

Команды для управления сервером NGINX

Рассмотрим основные команды, которые можно использовать для управления сервером NGINX.
Остановить веб-сервер NGINX:

$ sudo service nginx stop

Запустить NGINX после остановки:

$ sudo service nginx start

Перезапустить (остановить и запустить снова) одной строкой:

$ sudo service nginx restart

Автоматически перезапускать NGINX после перезагрузки сервера:

$ sudo update-rc.d nginx defaults

Если эта опция включена по умолчанию, Вы увидите примерно следующее сообщение в консоли:

System start/stop links for /etc/init.d/nginx already exist.

Мы надеемся, что информация в этой статье оказалась для Вас полезной и помогла справиться с установкой и настройкой веб-сервера NGINX. В следующей статье мы расскажем о том, как правильно установить и настроить веб-сервер Apache.
Если у Вас возникли вопросы, спрашивайте в комментариях, мы будем рады Вам помочь.

Читайте также:  Настройка контроллера домена сетевой карты и как заменить контроллер домена, не ломая текущую инфраструктуру

VDS/VPS на Timeweb

Проверка работы веб-сервера

В конце установки Ubuntu 18.04 запустит nginx. Веб-сервер уже должен работать.

Это можно проверить следующей командой:

Вывод будет выглядеть примерно так:

nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) since Fri 2018-04-20 16:08:19 UTC; 3 days agoMain PID: 2369 (nginx)Tasks: 2 (limit: 1153)        ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;        └─2380 nginx: worker process

Как можно увидеть выше, служба успешно запущена. Однако лучший способ проверить — это запросить страницу.

Если вы его не знаете, то есть следующие варианты выяснить:

Введите в командной строке:

Вы увидите несколько строк — попробуйте каждую из них в браузере.

Должна загрузиться приветственная страница nginx:

Nginx
Если она высветилась, значит, сервер работает правильно.

Настройка брандмауэра

Установка и настройка брандмауэра позволит закрыть все порты, кроме необходимых нам — 22 (SSH), 80 (HTTP), 443 (HTTPS). Первый протокол необходим для подключения к удаленному серверу. Второй и третий необходим для связи между клиентом и сайтом. Главное их отличие в том, что HTTPS — это зашифрованный HTTP. Шифрование данных происходит благодаря SSL-сертификату.

Установим утилиту UFW:

sudo apt install ufw

После успешной установки добавим веб-сервер в список доступных приложений брандмауэра:

sudo nano /etc/ufw/applications.d/nginx.ini

Заполним файл следующим образом:

Проверим список доступных приложений:

sudo ufw app list

Если среди них есть веб-сервер, значит всё сделано верно. Теперь нужно запустить брандмауэр и разрешить передачу трафика по вышеуказанным портам:

sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'

Чтобы проверить изменения, вводим команду:

sudo ufw status

Если всё сделано правильно, то в статусе будут перечислены все порты, которые нам необходимы.

Настройка Nginx для работы с Apache

Далее, необходимо создать дополнительный хост, работающий под Nginx, который будет перенаправлять запросы на веб-сервер Apache.

Для этого наберите:

$ sudo nano /etc/nginx/sites-available/apache
server {
listen 80;
server_name ap1.site www.ap1.site ap2.site www.ap2.site;
location / {
proxy_pass http://X.X.X.X:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Закройте файл с сохранение изменений.

Создайте ссылку командой:

$ sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/apache

Запустите тест сервиса на корректность:

$ sudo nginx -t

И в случае, если тест ошибок не нашёл, перезагрузите Nginx:

$ sudo systemctl reload nginx

Теперь, если вы в браузере откроете ссылку http://ap1.site/info.php, браузер вернёт вам страницу конфигурации PHP.

Таким образом, вы настроили Nginx как обратный прокси для Apache.

Требования

Перед тем, как приступить к установке, у вас должен быть создан пользователь с sudo привилегиями.

Как только вы создадите такой аккаунт, авторизуйтесь в качестве этого пользователя перед выполнением следующих шагов.

Timeweb VDS VPS

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Настройка виртуального хоста

На Nginx можно использовать серверные блоки для обслуживания нескольких доменов. Изначально у этого веб-сервера включен один виртуальный хост. Его файлы находятся в каталоге . Однако, это неудобно при размещении нескольких сайтов.

Чтобы это исправить в директории создадим каталог. В данном примере будем использовать условный домен «exemple.com», который нужно будет заменить своим доменом.

Начнем с создания каталога:

$ sudo mkdir -p /var/www/example.com/html
$ sudo chown -R $USER:$USER /var/www/example.com/html

Далее создадим пример страницы index.html:

$ snano /var/www/example.com/html/index.html

Вставим следующий код в файл:

<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com server block is working!</h1>
    </body>
</html>

Затем создадим каталог – «sites-available» (директория, в которой хранятся серверные блоки):

$ sudo nano /etc/nginx/sites-available/example.com

Впишем в него код, указав свой каталог и домен:

server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}

После этого создадим ссылку в каталоге «sites-enabled» (директория, в которой находятся, все настройки хоста), чтобы файл стал доступен:

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

Теперь настроены, и задействованы два виртуальных хоста. По умолчанию запросы, поступившие на 80 порт будут обрабатываться первым хостом, если они не соответствуют «www.example.com» или «example.com».

Для предотвращения различных сбоев с памятью, из-за дополнительных серверных имен, отредактируем файл .

В открывшемся файле ищем строку:

$ sudo nano /etc/nginx/nginx.conf

Убираем символ «#», сохраняем и закрываем.

Теперь выполним проверку файлов Nginx на отсутствие синтаксических ошибок:

$ sudo nginx -t

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

$ sudo systemctl restart nginx

Для проверки корректной работы домена введем в браузере ссылку «http://example.com». Если все настройки выполнены правильно, мы увидим следующую надпись:

Установка и настройка Nginx на Ubuntu

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

/var/log/nginx/error.log

Все запросы, поступающие к вашему web-серверу, будут записываться в файле .

/var/log/nginx/access.log

Знакомимся с важными файлами и директориями Nginx

  • /var/www/html: фактический веб-контент, который по умолчанию состоит только из приветственной страницы Nginx (вы видели ее ранее), находится в директории /var/www/html. Вы можете поменять это, изменив конфигурационные файлы Nginx.
  • /etc/nginx: конфигурационная директория Nginx. Все файлы настроек Nginx находятся именно здесь.
  • /etc/nginx/nginx.conf: основной конфигурационный файл Nginx. Используйте его, если хотите внести какие-либо изменения в общую конфигурацию Nginx.
  • /etc/nginx/sites-available: в этой директории хранятся все серверные файлы для каждого сайта. Nginx не будет использовать конфигурационные файлы в этой директории до тех пор, пока они не связаны с директорией включенных сайтов (ее адрес ниже). Иными словами, в этой директории хранятся и изменяются все серверные настройки, которые вы можете включить, связав с другой директорией.
  • /etc/nginx/sites-enabled/: эта директория, где находятся все включенные серверные файлы для каждого сайта. Обычно они создаются тогда, когда создается связь с конфигурационными файлами, которые находятся в директории sites-available.
  • /etc/nginx/snippets: эта директория содержит конфигурационные фрагменты, которые могут быть включены в конфигурацию Nginx. Например, сюда можно добавить повторяемые конфигурационные сегменты.
  • /var/log/nginx/access.log: в этом файле записываются все запросы к вашему веб-серверу (до тех пор, пока вы не измените это в настройках).
  • /var/log/nginx/error.log: в этом файле записываются все ошибки Nginx.

Настройка Nginx

Администрирование веб-сервера представляет из себя изменение и поддержку конфигурационных файлов. Среди них 1 файл конфигурации и 2 каталога. Это nginx.conf, sites-available и sites-enabled соответственно. Все они лежат в директории /etc/nginx.

Рассмотрим более детально главный файл конфигурации. Для этого откроем его для просмотра, используя редактор:

sudo nano /etc/nginx/nginx.conf

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

Image4

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

Перечислим некоторую часть директив главного конфигурационного файла:

  • worker_processes — число рабочих процессов сервера. Оно должно быть не больше, чем количество ядер процессора. Параметр auto установит число автоматически.
  • pid — файл с номером главного процесса.
  • include — отвечает за подключение иных файлов конфигурации, удовлетворяющих заданной маске.
  • events — контекст, состоящий из директив, влияющих на работу сетевого соединения.
    • worker_connections — максимальное число одновременно работающих соединений одного рабочего процесса.
    • multi_accept — флаг, который может быть как включен (on), так и выключен (off). Если он включен, то рабочий процесс будет принимать все новые соединения, иначе только одно.
    • use — указывает метод обработки соединений. По умолчанию сервер выбирает наиболее подходящий и эффективный.
  • http — контекст, состоящий из директив, отвечающих за работу HTTP-сервера.
    • sendfile — включает (on) или отключает (off) метод отправки данных sendfile().
    • tcp_nopush, tcp_nodelay — параметры, влияющие на производительность. Первый заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, а второй позволяет не буферизировать данные и отправлять их короткими очередями.
    • keepalive_timeout — параметр, отвечающий за время ожидания keep-alive соединения до его разрыва со стороны сервера.
    • keepalive_requests — максимальное число запросов по одному keep-alive соединению.
    • error_log — лог ошибок веб-сервера. Для сбора ошибок в определенной секции (http, server и т.д.) необходимо разместить директиву внутри нее.
    • gzip — сжатие контента. 

Устанавливаем Nginx

Так как Nginx доступен в стандартных репозиториях Ubuntu, установить его достаточно просто.

В данной сессии мы еще не обращались к системе пакетов apt, поэтому для начала вам нужно обновить локальный индекс пакетов. Таким образом вы получите доступ к самым последним (новым) спискам пакетов:

И лишь после этого устанавливайте Nginx:

$ sudo apt-get install nginx

После выполнения данной команды apt-get установит Nginx и все необходимые зависимости на ваш сервер.

Тестирование Nginx

После завершения инсталляции веб-сервера, Ubuntu запустит его автоматически.

Чтобы проверить, что он работает, нужно ввести команду:

$ systemctl status nginx

В случае успешного запуска службы, на экране должно отобразиться:

Установка и настройка Nginx на Ubuntu

В терминале набираем команду:

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Другой метод проверки видимости сервера в интернете:

$ curl -4 icanhazip.com

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

Она будет выглядеть вот так:

Установка и настройка Nginx на Ubuntu

Работа с nginx

В этом разделе вы познакомитесь с основными командами управления веб-сервером.

Команда для того, чтобы остановить веб-сервер:

$ sudo systemctl stop nginx

Запустить веб-сервер после остановки:

$ sudo systemctl start nginx

Перезапустить сервис (остановить и снова запустить):

$ sudo systemctl restart nginx

Если вы вносите конфигурационные изменения, nginx можно перезагрузить без потери соединений. Для этого введите команду:

$ sudo systemctl reload nginx

Nginx по умолчанию начинает работу в то же время, когда и сервер. Но эту логику можно изменить следующей командой:

$ sudo systemctl disable nginx

Если вам снова нужно сделать так, чтобы сервис начинал работу одновременно с сервером, введите:

$ sudo systemctl enable nginx

Настройка фаервола

Перед тестированием nginx необходимо настроить фаервол для того, чтобы дать доступ сервису. Nginx регистрирует себя как сервис с утилитой ufw — благодаря этому дать доступ nginx довольно легко.

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

Вам высветится вот такой список:

То есть для nginx доступны 3 профиля:

  • Nginx Full: профиль открывает два порта – 80 (обычный, незашифрованный веб-трафик) и 443 (TLS/SSL зашифрованный трафик)
  • Nginx HTTP: профиль открывает только порт 80 (обычный, незашифрованный веб-трафик)
  • Nginx HTTPS: профиль открывает только порт 443 (TLS/SSL зашифрованный трафик)

Рекомендуется включать наиболее ограниченный профиль, но при условии, что он будет пропускать тот трафик, который вы настроили. Так как SSL-протокол пока еще не настроен, вам нужно открыть порт 80 для обычного трафика.

$ sudo ufw allow 'Nginx HTTP'

Проверить изменения можно командой:

Читайте также:  VPS на NVMe дисках | FORNEX

В выводе вы увидите, что HTTP-трафик разрешен:

 Nginx HTTP (v6)         

Настройка Nginx

В этом разделе вам нужно будет установить Nginx и настроить на нём виртуальные хосты для двух других ваших доменов.

Запустите инсталляцию Nginx:

$ sudo apt install nginx

Созданный каталог дефолтного виртуального хоста нужно удалить:

$ cd /etc/nginx/sites-enabled
$ sudo rm default

Для новых хостов сначала создайте соответствующие директории:

$ sudo mkdir -v /usr/share/nginx/ng1.site
$ sudo mkdir -v /usr/share/nginx/ng2.site

Теперь создайте для них файлы index.html и info.php:

$ echo "<title>ng1.site</title><h1>Nginx Site - ng1.site</h1>" | sudo tee /usr/share/nginx/ng1.site/index.html
$ echo "<title>ng2.site</title><h1>Nginx Site - ng2.site</h1>" | sudo tee /usr/share/nginx/ng2.site/index.html
$ echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/ng1.site/info.php
$ echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/ng2.site/info.php

Далее, для каждого из ваших Nginx-сайтов создайте файл хоста, заменяя ИМЯ_ДОМЕНА на имена ваших доменов, которые вы будете размещать на Nginx. В примере, это – ng1.site и ng2.site:

$ sudo nano /etc/nginx/sites-available/ИМЯ_ДОМЕНА

И вставьте в него следующий текст, также заменяя ИМЯ_ДОМЕНА на имена ваших доменов, как, например, ng1.site и ng2.site:

server {
listen 80 default_server;
root /usr/share/nginx/ИМЯ_ДОМЕНА;
index index.php index.html index.htm;
server_name ИМЯ_ДОМЕНА www.ИМЯ_ДОМЕНА;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include snippets/fastcgi-php.conf;
}
}

Сохраняйте файлы перед закрытием. Проделайте процедуру для каждого из ваших доменов.

После этого, создайте ссылки для ваших виртуальных хостов:

$ sudo ln -s /etc/nginx/sites-available/ng1.site /etc/nginx/sites-enabled/ng1.site
$ sudo ln -s /etc/nginx/sites-available/ng2.site /etc/nginx/sites-enabled/ng2.site

Запустите тест корректности синтаксиса:

$ sudo nginx -t

Перезапустите сервис, если проверка синтаксиса ошибок не показала:

$ sudo systemctl reload nginx

И наконец, в браузере откройте по очереди ссылки на ваши сайты, работающие на Nginx: http://ng1.site/info.php и http://ng1.site/info.php:

Конфигурационная страница PHP
Конфигурация PHP

Соответственно, каждый из ваших доменов должен теперь открываться по ссылке на него. Например, набрав в браузере http://ng1.site, вы должны получить следующую картинку:

Первый сайт, работающий на Nginx

Что нужно для установки

Для инсталляции на Ubuntu 18.04 понадобится: установленная операционная система, имеющая статический IP-адрес, с доступом в интернет. Также желательно, чтобы файрвол UFW был включен.

Тестирование веб-сервера NGINX

Вы должны увидеть веб-страницу по умолчанию под названием «Добро пожаловать в nginx!

Веб-страница по умолчанию NGINX
Веб-страница по умолчанию NGINX

Теперь требуется, убедится, что соответствующий порт открыт в вашем брандмауэре. Например, если вы включили Брандмауэр UFW на своем сервере Ubuntu. Вы должны попытаться обновить правила брандмауэра. Для того чтобы разрешить NGINX общаться по порту 80 и/или 443 следующим образом.

Команда разрешает NGINX работать на порту 80:

$ sudo ufw allow 'Nginx HTTP'

Команда разрешает NGINX работать на порту 443:

$ sudo ufw allow 'Nginx HTTPS'

Важные директории и файлы настроек Nginx

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

  • /var/www/html – директория, где распологается начальная страница Nginx (см. выше).
  • /etc/nginx – директория, в которой находятся основные файлы настроек Nginx.
  • /etc/nginx/nginx.conf – файл, содержащий главные настройки конфигурации Nginx.
  • /etc/nginx/sites-enabled – в данной папке находятся активные виртуальные блоки веб-сервера Nginx.
  • /etc/nginx/sites-available – директория, в которой находятся файлы виртуальных блоков для каждого из сайтов, ссылка на них должна быть в каталоге /etc/nginx/sites-enabled.
  • /etc/nginx/snippets – каталог, содержащий так называемые сниппеты, которые можно при необходимости подключать к основной конфигурации сервера Nginx.
  • /var/log/nginx – директория, которая содержит журналы событий работы Nginx.

Виртуальные хосты Apache

Следующий этап в настройке сервера – создание виртуальных хостов для ap1.site и ap2.site. Как было описано выше, эти домены будут работать под управлением Apache. Для этих сайтов нужно создать соответствующие директории и файлы index.html:

$ sudo mkdir -v /var/www/ap1.site /var/www/ap2.site
$ echo "<title>ap1.site</title><h1>Apache Site - ap1.site</h1>" | sudo tee /var/www/ap1.site/index.html
$ echo "<title>ap2.site</title><h1>Apache Site - ap2.site</h1>" | sudo tee /var/www/ap2.site/index.html

Для каждого из ваших сайтов необходимо создать соответствующий файл info.php. Так можно будет проверить корректность конфигурации PHP на каждом из хостов:

$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/ap1.site/info.php
$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/ap2.site/info.php

Далее, создайте файлы для каждого из ваших виртуальных хостов при помощи, например, текстового редактора nano. Будьте внимательны: ИМЯ_ДОМЕНА – это доменное вашего сайта. Запустите команду сначала для первого вашего сайта (в примере это – ap1.site):

sudo nano /etc/apache2/sites-available/ИМЯ_ДОМЕНА.conf

В открытый файл вставьте следующий текст, заменяя ИМЯ_ДОМЕНА на имя вашего первого домена, который вы размещаете на Apache (в примере это – ap1.site):

<VirtualHost *:8080>
ServerName ИМЯ_ДОМЕНА
ServerAlias www.ИМЯ_ДОМЕНА
DocumentRoot /var/www/ИМЯ_ДОМЕНА
<Directory /var/www/ИМЯ_ДОМЕНА
AllowOverride All
</Directory>
</VirtualHost>

Теперь нужно закрыть файл с сохраненим внесённых изменений (при использовании nano нужно нажать Ctrl-X, Y и Enter). После этого, проделайте то же для второго вашего домена.

После чего, необходимо создать ссылки на созданные хосты:

$ sudo a2ensite ap1.site
$ sudo a2ensite ap2.site

Протестируйте Apache на корректность синтаксиса:

sudo apachectl -t

Если проверка сообщила, что Syntax OK, нужно будет перезапустить сервис:

sudo systemctl reload apache2

Чтобы протеститровать доступность ваших сайтов, наберите в браузере http://ap1.site:8080 для первого сайта и http://ap2.site:8080 для второго.

Если, всё идёт правильно, в первом случае вы увидите:

Первый сайт на Apache

А во втором:

Второй сайт на Apache

А, набрав в браузере http://ap1.site:8080/info.php и http://ap1.site:8080/info.php, вы увидите конфигурационную страницу PHP:

Страница конфигурации PHP

Настройка веб-сервера Nginx

При настройке веб-сервера Nginx, первым делом следует уделить внимание брандмауэру, используемому операционной системой вашего сервера. Для защиты подключений к вашей системе, с точки зрения простоты использования и надёжности, наиболее оптимально подойдёт такой инструмент как Uncomplicated Firewall (UFW). Чтобы увидеть профили приложений, о которых знает UFW, используйте инструкцию:

$ sudo ufw app list

Список этих приложений выглядит так:

sudo ufw app list при настройке Nginx на Ubuntu 20.04

Чтобы подключаться к Nginx используя HTTP, введите команду:

$ sudo ufw allow 'Nginx HTTP'

и проверьте статус UFW:

$ sudo ufw status

Должно быть примерно так:

sudo ufw status при настройке Nginx на Ubuntu 20.04

Поскольку веб-сервер устанавливается как служба, проверить статус Nginx можно командой:

$ systemctl status nginx
systemctl status nginx при настройке Nginx на Ubuntu 20.04
Начальная страница Nginx

Установка компонентов

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

Сейчас в официальных репозиториях доступна версия 1.10.0, а в стабильной PPA уже доступна 1.10.1. Если для вас версия не нужна можно обойтись и без PPA. Дальше обновите списки пакетов из репозиториев:

sudo apt update

И устанавливаем ngnix:

sudo apt install nginx

nginx

После того как установка сервера Nginx будет завершена добавим программу в автозагрузку, чтобы она запускалась автоматически:

sudo systemctl enable nginx

Если вы уже сейчас откроете браузер, то увидите работающий nginx, но нам предстоит его еще настроить.

nginx1

Настройка Nginx Ubuntu намного сложнее чем Apache. Здесь мы не будем рассматривать все опции и возможности программы, а поговорим только об основном. Есть различные конфигурации, в которых Nginx используется в качестве прокси сервера, а основной сервер Apache, но нас это интересовать не будет. Нам нужна установка Nginx как самостоятельного веб-сервера.

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

  • /etc/nginx/nginx.conf — главный файл конфигурации
  • /etc/nginx/sites-available/* — файлы конфигурации для виртуальных хостов, проще говоря для каждого сайта.
  • /etc/nginx/sites-enabled/* — файлы конфигурации активированных сайтов.

На самом деле файлы конфигурации для виртуальных хостов читаются только из директории sites-enabled, но здесь содержаться ссылки на sites-available. Такая система была придумана, чтобы дать возможность отключать на время те или иные сайты, не стирая их конфигурацию. Все остальные файлы содержат только объявления переменных и стандартные настройки, которые изменять не нужно. Что же касается nginx.conf, то в него включаются все файлы из sites-enables, а поэтому они могут содержать все точно такие же инструкции. А теперь давайте рассмотрим главный файл конфигурации:

sudo vi /etc/nginx/nginx.conf

nginx2

Как видите файл разделен на секции. Общая структура такова:

  • глобальные опции отвечают за работу всей программы.
  • events — эта секция содержит настройки для работы с сетью.
  • http — содержит настройки веб-сервера. Должна содержать секцию servier для тонкой настройки каждого сайта.
  • server — в этой секции содержится настройка каждого размещенного на веб-сервере сайта.
  • location — секция location может находиться только внутри секции server и содержит настройки только для определенного запроса.
  • mail — содержит настройки почтового прокси.

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

  • user — пользователь, от имени которого будет работать программа.
  • worker_processes — устанавливает сколько процессов нужно запускать для параллелизации работы программы, нужно запускать не больше процессов, чем у вас есть ядер. Можно установить параметр auto и тогда программа определит это число сама.
  • pid = файл pid программы.
  • worker_rlimit_nofile — указывает максимальное количество файлов, которые может открыть программа. Рассчитывается как worker_processes * worker_connections* 2.

С глобальными опциями закончили, их было не так много и они не такие интереснее. Куда интереснее в плане оптимизации опции с секции events:

  • worker_connections — количество соединений, которые программа может обрабатывать одновременно на одном процессе. Если умножить worker_process на этот параметр, то мы получим максимальное количество пользователей, которые могут подключиться к серверу одновременно. Рекомендуется устанавливать значение от 1024 до 4048.
  • multi_accept — разрешить принимать много подключений одновременно, установите параметр on или off.
  • use — способ работы с сетевым стеком. По умолчанию используется poll, но для Linux эффективнее использовать epoll.

Дальше переходим самой главной секции — http. Здесь опций намного больше:

  • sendfile — использовать метод отправки данных sendfile. Значение on.
  • tcp_nodelay, tcp_nopush — отправлять заголовки и начало файла одним пакетом. Значение on.
  • keepalive_timeout — таймаут ожидания, перед тем как keepalive соединение будет разорвано, по умолчанию 65, но можно уменьшить до 10 секунд.
  • keepalive_requests — максимальное количество keepalive соединений от одного клиента, рекомендовано 100.
  • reset_timedout_connection — разрывать соединения после таймаута. Значение on.
  • open_file_cache — кэшировать информацию об открытых файлах. Строчка настройки выглядит вот так: open_file_cache max=200000 inactive=20s; max — максимальное количество файлов в кэше, время кэширования.
  • open_file_cache_valid — указывает по истечении какого времени нужно удалить информацию из кэша. Например: open_file_cache_valid 30s;
  • open_file_cache_min_uses — кэшировать информацию о файлах, которые были открыты как минимум указанное количество раз.
  • open_file_cache_errors — кэшировать информацию об отсутствующих файлах, значение on.

Основные параметры рассмотрели. Эти настройки помогут вам получить большую производительность от nginx. Секцию server и location мы рассмотрим в настройке виртуальных хостов.

Поэтапная настройка NGINX

Рекомендуем Вам сначала проверить и скорректировать настройки по умолчанию в файле /etc/nginx/nginx.conf.

Начните настройку с проверки или указания пользователя, от имени которого Вы будете работать:

Читайте также:  Максимизируйте защиту своих сайтов с помощью SPF Reg RU – начните сегодня

Затем укажите число рабочих процессов. Мы советуем исходить из количества процессорных ядер в Вашем сервере, то есть число рабочих процессов будет равняться числу процессорных ядер (но Вы можете поставить и какое-либо другое значение). Это число задается следующей командой:

Далее Вы можете указать место, куда будут записываться файлы с логами ошибок:

error_log /spool/logs/nginx/nginx.error_log notice;

Всего существует 7 уровней уведомлений: info, notice, warn, error, crit, alert и emerg. Уровни перечислены в порядке от наименее важных сообщений к наиболее важным. Выставляя уровень, учитывайте, что в файл логов будут попадать все сообщения этого и более высоких по важности уровней.

Затем Вам нужно будет выбрать метод обработки соединений. Если Вы затрудняетесь в выборе, тогда NGINX самостоятельно выбирает метод, который является наиболее эффективным. Ознакомиться со всеми поддерживаемыми методами Вы можете по этой ссылке: http://nginx.org/ru/docs/events.html

Теперь Вы должны определиться с максимальным числом соединений, которое одновременно будет обрабатывать рабочий процесс. Высчитывая это число, держите в уме, что максимальное количество обслуживаемых клиентов будет равно произведению worker_connections и worker_processes.
У Вас должен получиться похожий код:

events {
worker_connections 2048;
}

В следующем блоке настроек первым делом необходимо включить sendfile(), так как это позволяет улучшить производительность сервера:

Далее выставите параметр, касающийся времени поддержания соединения, если по нему нет запросов:

Теперь Вам необходимо включить файл, отвечающий за поддержку MIME-типов, используя директиву include:

include /etc/nginx/mime.types;

Данная настройка определяет соответствие между MIME-типами и расширениями имен файлов, и, как правило, этот файл содержит большинство соответствий. В данном случае соответствие будет задаваться директивой types. Полный список соответствий Вы можете найти в файле conf/mime.types.

Далее Вам нужно указать тип данных по умолчанию:

default_type application/octet-stream;

Теперь перейдем к настройке, которая касается сжатия; за нее отвечает модуль gzip. Благодаря ему размер данных, которые передаются, может быть уменьшен в два раза и более. Строка со включенным gzip выглядит следующим образом:

Поэтому если Вы хотите выключить сжатие ответа данным методом, вместо “on” Вам нужно написать “off”.
Следующее, с чем необходимо определиться, — это размер и количество буферов, в которые будет сжиматься ответ:

При этом размер одного буфера, как правило, соответствует размеру страницы.

Теперь укажите, на каком уровне компрессии будет происходить сжатие (выбирайте значение от 1 до 9):

Еще одна из возможных настроек — минимальная длина ответа, для которого будет использовано сжатие:

Вы можете также определить, к каким MIME-типам будет применено сжатие ответа при помощи gzip. По умолчанию эта строка выглядит так:

Но Вы можете добавить и какие-либо еще типы. Если Вы хотите, чтобы сжатие применялось ко всем MIME-типам, тогда введите знак звездочки “*”.

Сжатие ответа для проксированных запросов определяется отдельным параметром:

По умолчанию эта возможность выключена (off), но Вы можете установить там один или несколько других параметров, к примеру, “auth” разрешит использование gzip, если заголовок вопроса содержит поле “Authorization”. Параметр “Any” делает возможным сжатие для всех проксированных запросов.

Теперь давайте перейдем к настройке файлов логирования.

За запись логов в NGINX отвечает модуль ngx_http_log_module. Он записывает логи в том формате, который указан; по умолчанию (если Вы не укажите какой-либо другой) выбирается “combined”:

access_log logs/access.log combined

Обычно логи сохраняются в директории location, при этом Вы можете сделать перенаправление, и тогда location будет отличным от изначального.
Сама конфигурация логов может выглядеть следующим образом:

log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;

Давайте рассмотрим каждую из директив данной конфигурации:

  • log_format – определяет формат логов; Вы можете использовать как общие переменные, так и переменные, которые существуют только в тот момент, когда происходит запись в лог. К примеру, в данной директиве:
  • $remote_addr – адрес клиента;
  • $remote_user – имя пользователя;
  • $time_local — локальное время;
  • $request — первоначальная строка запроса целиком;
  • $status – статус ответа;
  • $bytes_sent – размер байт, которые были переданы клиенту;
  • $http_referer и $http_user_agent — поля заголовка запроса клиента;
  • $gzip_ratio — достигнутый коэффициента сжатия будет записан в лог.

Следующая директива access_log указывает путь, формат (будет сжат файл или нет) и настройки записей. Также существует директива open_log_file_cache, которая определяет кэш, где будут храниться файловые дескрипторы тех логов, которые часто используются.

При желании Вы можете сделать запись буферизированной. Есть два способа сделать это: можно использовать параметр buffer, определив размер буфера (размер по умолчанию равняется 64 Кбайт), либо укажите параметр gzip (этот параметр также отвечает за сжатие файла: Вы можете выбрать значение от 1 до 9, при этом 1 равняется быстрому, но не очень хорошему сжатию, а 9 равняется хорошему, но медленному сжатию). Для чтения подобных сжатых логов файл необходимо распаковывать, либо Вы можете использовать утилиту “zcat”.

Заключительным этапом настройки веб-сервера является включение необходимого сайта (или сайтов), а также SSL при помощи директивы include:

include /etc/nginx/sites-enabled/*;
include /etc/nginx/ssl-enabled/*;

Настройка Nginx Server Blocks

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

Данные сайта изначально расположены в каталоге /var/www/html. Чтобы добавить ещё один домен, необходимо создать директорию /my-domain.host/html, где my-domain.host – имя создаваемого домена, в /var/www с соответствующими правами:

$ sudo mkdir -p /var/www/my-domain.host/html$ sudo chown -R $USER:$USER /var/www/my-domain.host/html$ sudo chmod -R 755 /var/www/my-domain.host

Теперь, когда есть директория домена, в ней можно создать файл страницы сайта index.html:

$ sudo nano /var/www/my-domain.host/html/index.html
<html> <head> <title> Domain on Nginx </title> </head> <body>  <h1> Connection to my-domain.host is created successfully!!! </h1> </body></html>

Чтобы сохранить изменения и выйти из текстового редактора используйте CNTRL X, после чего Y и Enter.

Далее, в каталоге /etc/nginx/sites-available/ необходимо создать файл my-domain.host:

$ sudo nano /etc/nginx/sites-available/my-domain.host

и скопируйте в него:

server { listen 80; listen [::]:80; root /var/www/my-domain.host/html; index index.html index.htm index.nginx-debian.html; server_name my-domain.host www.my-domain.host; location / { try_files $uri $uri/ =404; } }

После того, как произведена замена server_name на имя вашего домена, необходимо создать ссылку в /etc/nginx/sites-enabled/:

$ sudo ln -s /etc/nginx/sites-available/my-domain.host /etc/nginx/sites-enabled/

Также, необходимо отредактировать файл /etc/nginx/nginx.conf:

$ sudo nano /etc/nginx/nginx.conf

а именно, раскомментируйте строку, содержащую server_names_hash_bucket_size, удалив символ #. Перед выходом из текстового редактора не забудьте сохранить произведённые изменения (CNTRL X, после чего Y и Enter).

Для выявления возможных ошибок в файлах Nginx введите:

$ sudo nginx -t

Если ошибок нет, вывод команды должен быть таким:

Проверка ошибок в файлах Nginx

Следующим шагом Nginx следует перезапустить:

$ sudo systemctl restart nginx

После произведённых действий Nginx готов обслуживать новый виртуальный хост. Чтобы убедиться в этом, откройте добавленный домен в браузере. Сообщение на странице будет выглядеть как:

Подключение к домену осуществлено

Настройка сжатия Gzip

Сжатие контента необходимо, чтобы уменьшить размер загружаемых браузером данных. Это ускоряет загрузку сайта, но добавляет дополнительную нагрузку на процессор сервера. Чтобы включить сжатие в секции http нужно добавить параметр:

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

  • gzip_min_length — минимальная длина страницы в байтах, при которой нужно использовать сжатие, например, 1000 (1 кб)
  • gzip_proxied — нужно ли сжимать проксированые запросы, any говорит, что нужно сжимать все.
  • gzip_types — типы файлов, которые нужно сжимать, например: text/plain application/xml application/x-javascript text/javascript text/css text/json;
  • gzip_disable «msie6» — в IE 6 сжатие не поддерживается, поэтому отключаем.
  • gzip_comp_level — уровень сжатия, доступны варианты от 1 до 10. 1 — минимальное, 10 — максимальное сжатие.

Установка Nginx

$ sudo apt update$ sudo apt install nginx

Первая инструкция выполняет обновление базы данных доступных для установки пакетов. Вторая выполняет установку элементов веб-сервера Nginx.

На этом всё, что касается установки Nginx. Переходим к его настройке.

Проверяем веб-сервер

В самом конце процесса установки Ubuntu 16.04 запустит Nginx. Веб-сервер уже должен работать.
Используя демон systemd, вы можете проверить, запущен ли веб-сервер:

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

Active: active (running) since Mon 2016-04-25 15:44:00 UTC; 5min 9s ago

Благодаря этим данным вы можете убедиться, что все работает исправно. Однако лучший способ протестировать работу Nginx – это запросить какую-либо страницу.

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

В ответ вы увидите несколько строчек – введите каждую из них в адресную строку своего браузера, чтобы проверить, какая из них работает.

$ sudo apt-get install curl
$ curl -4 icanhazip.com

Вам должна высветиться приветственная страница Nginx:

Как установить Nginx на Ubuntu 16.04Эта страница просто показывает вам, что сервер работает правильно.

Установка NGINX на Ubuntu 20

Прежде чем приступить к установке NGINX. Сначала запустите команду sudo apt-get update, чтобы получить информацию о новых и обновленных пакетах Ubuntu.

Nginx доступен в репозитории пакетов Ubuntu. Поэтому Nginx очень лего установить с помощью следующей команды:

$ sudo apt-get install nginx

Установка nginx

Так как nginx по умолчанию доступен в репозиториях Ubuntu, его можно установить прямо из них при помощи пакетного менеджера apt.

$ sudo apt update$ sudo apt install nginx

После выполнения команды пакетный менеджер установит nginx и все необходимые зависимости на ваш сервер.

Проверьте состояние службы NGINX

Давайте сделаем быструю проверку, чтобы подтвердить статус сервиса NGINX. Для этого выполните следующую команду:

$ sudo systemctl status nginx

Проверьте состояние службы NGINX
Проверьте состояние службы NGINX

Вывод приведенной выше команды подтверждает, что NGINX активен и работает.

Если вы получаете сообщение о том, что NGINX неактивен, не запущен или не работает. Тогда вы можете вручную запустить службу NGINX. Для этого выполните следующую команду:

$ sudo systemctl start nginx

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

$ sudo dpkg-l nginx

Провера версии Nginx на Ubuntu
Провера версии Nginx на Ubuntu

Проверьте версию Nginx на Ubuntu

Эти данные показывают, что установлен nginx версии 1.18.0. На момент написания статьи это последняя версия для Ubuntu 20.04.

Просмотр статистики

Просмотр статистики работы веб-сервера очень важен. Установка nginx, должна содержать настройку возможности получения статистики. Для того чтобы это сделать добавьте такие строки к вашему хосту в секцию server:

Статистика будет доступна только с локального ip:

wget localhost/basic-status -O -

Установка Nginx

Nginx можно установить из репозиториев Ubuntu, поэтому для исталляции пакета необходимо ввести следующие команды, подключившись для этого к системе с помощью учётной записи, имеющей привилегию на запуск утилиты sudo:

$ sudo apt update

Первая команда обновляет список пакетов вашей системы.

$ sudo apt install nginx

Вторая команда как раз и выполняет установку элементов сервера Nginx на вашу систему.

Оцените статью
Хостинги