Установка сервера 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. Воспроизводимые сегменты конфигурации хорошо подходят для преобразования в сниппеты.