Полный цикл в digital

Установка сервера Nginx на Ubuntu

Обновляем список пакетов сервера:

sudo apt update

Обновляем пакеты сервера:

sudo apt upgrade

Установка веб сервера Nginx:

sudo apt install nginx

Добавляем веб сервер Nginx в автозагрузку:

sudo systemctl enable nginx

Управление веб сервером Nginx

Запустить службу Nginx:

sudo systemctl start nginx

Остановить службу Nginx:

sudo systemctl stop nginx

Перезапустить службу Nginx:

sudo systemctl restart nginx

Статус службу Nginx:

sudo systemctl status nginx

Проверка на синтаксические ошибки Nginx:

sudo nginx -t

Проверка версии веб сервера Nginx:

nginx -v

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

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

В Ubuntu используется оболочка под названием UFW или Uncomplicated FireWall. В этом разделе мы разберём, как выполняется настройка UFW Ubuntu.

Проверка состояния файрвола:

sudo ufw status

Включение файрвола:

sudo ufw enable

Отключение файрвола:

sudo ufw disable

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

sudo ufw reset

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

Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw - deny и reject.

Посмотреть доступные имена приложений:

sudo ufw app list

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

Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Как видно из этого вывода, для Nginx доступно три профиля:

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

Рекомендуется включать самый ограниченный профиль, который будет позволять входящий трафик. Поскольку мы не настраивали SSL для нашего сервера в этом руководстве, нам потребуется включить только порт 80:

sudo ufw allow 'Nginx HTTP'

Проверяем внесённые изменения командой:

sudo ufw status

В выводе вы должны видеть, что HTTP трафик разрешён:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Модули Nginx

При установке nginx средствами ОС в Linux нет возможности сконфигурировать его установку, чтобы добавить или убрать какие-либо модули и nginx устанавливается как есть. Если необходимо добавить какой-либо модуль, то нужно пересобрать nginx вручную. Предположим, нам необходимо добавить в nginx модуль http_mp4_module.

Вывод команды покажет, что nginx собран без него:

sudo nginx -V

Вывод:

nginx version: nginx/1.12.0
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --without-http_geo_module --without-http_limit_req_module --without-http_limit_zone_module
--without-http_memcached_module --without-http_referer_module --without-http_scgi_module --without-http_split_clients_module
--with-http_stub_status_module --without-http_ssi_module --without-http_userid_module --without-http_uwsgi_module
--add-module=/tmp/buildd/nginx-1.12.0/debian/modules/nginx-echo

Сохраним вывод в текстовый редактор - эта информация нам пригодится при конфигурировании. Видим, что версия nginx у нас установлена 1.12.0 - скачиваем такую же версию:

sudo wget http://nginx.org/download/nginx-1.12.0.tar.gz

Распакуем архив в папку nginx-1.12.0:

sudo tar –xvf nginx-1.12.0.tar.gz

Перейдём в папку nginx-1.12.0:

sudo cd nginx-1.12.0

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

sudo aptitude install build-essential

После установки пакетов приступаем к конфигурированию nginx с добавлением модуля http_mp4_module. Для этого копируем из текстового редактора вывод команды nginx -V начиная с --prefix= и до первого --add-module= (все присутствующие в выводе --add_module= нам не нужны). После чего пишем в консоли ./configure и вставляем скопированное из редактора. Должно получиться так:

./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module

В конец строки добавляем --with-http_mp4_module чтобы получилось так:

./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module --with-http_mp4_module

Нажимаем Enter и ждём окончания процесса.

Серверные логи

По умолчанию каждый запрос к вашему веб-серверу записывается в этом файле, если только Apache не настроен на другое поведение:

/var/log/nginx/access.log

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

/var/log/nginx/error.log

Настройка сервера Nginx через htaccess

Если в случае с серверами Apache для настройки следует редактировать файл .htaccess, в Nginx таковой файл отсутствует. Тем не менее, многое можно настроить, отредактировав файлы конфигурации виртуальных доменов.

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

Как вы заметили есть папки conf, mods и site. У папок есть приставки available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available.

  • /etc/nginx директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.
  • /etc/nginx/nginx.conf основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
  • /etc/nginx/sites-available/ директория, где могут храниться серверные блоки для каждого сайта. Nginx не будет использовать файлы конфигурации из этой директории, если они не будут связаны с директорией sites-enabled. Обычно конфигурации серверных блоков записываются в эту директорию и активируются посредством ссылки на другую директорию.
  • /etc/nginx/sites-enabled/ директория, где хранятся активные серверные блоки каждого узла. Они созданы посредством ссылки на файлы конфигурации в директории sites-available.
  • /etc/nginx/snippets в этой директории содержатся фрагменты конфигурации, которые можно включить в конфигурацию Nginx. Воспроизводимые сегменты конфигурации хорошо подходят для преобразования в сниппеты.
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг