3/5 - (2 голоса)

Наш урок рассмотрит web-сервер Nginx и его использование, предоставляя вам ценную информацию, советы, отчеты об ошибках, логи и примеры файлов настройки для сайтов Drupal и WordPress. Установив Nginx на компьютер Linux с вашим любимым дистрибутивом, вы сможете узнать его версию, выполнив следующую команду:

$ nginx -V 
nginx version: nginx/1.10.0 (Ubuntu) built with OpenSSL 1.0.2g 1 Mar 2016 TLS SNI support enabled

На компьютерах с Ubuntu и Debian директорией по умолчанию для файлов настройки Nginx является /etc/nginx, где расположен главный файл настройки nginx.conf. Вы можете определить новые сайты внутри nginx.conf, но лучше будет определить их внутри директории /etc/nginx/sites-enabled, поскольку по умолчанию файл nginx.conf автоматически читает всё, что в нем находится (включая символические ссылки). Причиной тому служит такая строка в блоке ‘http’ в nginx.conf: include /etc/nginx/sites-enabled/*;

Она означает, что вы можете включить и другие директории; но считается хорошей практикой по возможности использовать директории по умолчанию, поскольку это позволит другим людям лучше справиться с настройкой вашего Nginx. Также портом по умолчанию для HTTP-трафика является TCP-порт 80 — если вы используете порт по умолчанию, то следующие два URL будут одинаковы: http://linuxformat.com и http://linuxformat.com:80.

О портах TCP/IP

Если вы не используете порт HTTP по умолчанию, то от вас требуется указать номер желаемого порта. Есть разные способы выяснить, используется ли на данной машине порт TCP или UDP. Следующий вывод показывает доступность порта, а также процесс, использующий порт, но требует SSH-доступа к компьютеру и привилегий root:

# netstat -tulpn | grep :80 
tcp6 0 0 :::80 :::* LISTEN 7039/apache2

Поскольку SSH-доступ к компьютеру не всегда осуществим, следующая команда, использующая утилиту netcat, проверит, слушает ли данный IP-адрес (в нашем случае — 127.0.0.1, но вы можете поместить любой желаемый IP-адрес) данный порт и без SSH- доступа к указанному компьютеру:

 $ nc -zv 127.0.0.1 80 
localhost [127.0.0.1] 80 (http)open

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

 $ nc -zv 127.0.0.1 8080 
localhost [127.0.0.1] 8080 (http-alt) : Connection refused [В соединении отказано]

открытых портов TCP/IP из командной строки компьютера, более точные, поскольку в удаленном подключении может быть отказано промежуточными устройствами сети, такими как роутеры или брандмауэры. Если вы попытаетесь запустить Nginx, используя порт HTTP по умолчанию, а порт номер 80 уже занят Apache, вы получите следующее сообщение об ошибке на вашем экране или в лог-файле ошибок Nginx:

2017/01/07 15:57:13 [emerg] 1664#1664: listen() to 0.0.0.0:80, backlog
511 failed (98: Address already in use [Адрес
уже используется])
2017/01/07 15:57:13 [emerg] 1664#1664: listen() to [::]:80, backlog
511 failed (98: Address already in use)
2017/01/07 15:57:13 [emerg] 1664#1664: still could not bind()
[связь невозможна]

Базовый Nginx

Приведенное сообщение об ошибке гласит, что процесс сервера Nginx не может связаться с портом номер 80, поскольку порт уже используется. Чтобы избежать подобных проблем, на нашем уроке мы возьмем для базовой настройки Nginx порт 8080. Еще одним преимуществом порта номер 8080 является то, что его можно использовать даже без привилегий root.

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

nginx отладка поиск ошибок

Первое, что стоит сделать после успешной установки Nginx — это удалить символическую ссылку под названием ‘default’ в /etc/ nginx/sites-enabled. Чтобы изменения вступили в силу, вам понадобится перезапустить Nginx. В системах Ubuntu или Debian перезапуск сервиса может быть выполнен с помощью # service nginx restart. Пожалуйста, имейте в виду, что успешное выполнение предыдущей команды не генерирует вывода!

Обслуживание сайтов

В данном разделе мы покажем вам, как создать настройку Nginx для обслуживания статических страниц, используя порт номер 8080. Обычной практикой будет поместить все файлы настройки в /etc/nginx/sites-available, а символические ссылки для сайтов, которые вы хотите сделать активными — в /etc/nginx/sites-enabled.

Содержимое simple.site, располагающегося в /etc/nginx/sitesavailable, таково:

server {
listen 8080;
access_log /srv/www/S1/logs/access.log combined;
error_log /srv/www/S1/logs/error.log warn;
root /srv/www/S1/public_html;
index index.html index.htm;
}

Каждому сайту нужен свой блок ‘server’, где определяется всё о сайте. Каждый блок ‘server’ встроен в блок ‘http’ файла nginx.conf. Самые важные определения блока ‘server’ должны работать с портом TCP, который будет слушать сайт (listen); форматом и расположением лог-файла доступа (access_log) и лог-файла ошибок (error_log); именем сервера (server_name), которое может быть доменом или поддоменом; списком принимаемых файлов индекса (index); и директорией root сайта (root). Однако требуются только определения listen, index и root. Поскольку simple.site не использует домен или поддомен, вам не придется определять переменную server_name.

После создания файла настройки вам понадобится создать символическую ссылку на него в /etc/nginx/sites-enabled и необходимые директории, и заполнить сайт, который в нашем случае будет простым HTML-файлом с именем index.html или index.htm, в зависимости от ваших предпочтений — значения переменной ‘index’ отобразят порядок, в котором Nginx будет искать файлы индекса, чтобы автоматически загрузить их при посещении вами корневой (/) страницы сайта. Обратите внимание, что у вас могут быть любые имена файлов и расширения по вашему желанию, если только они не блокируются каким- либо активным правилом Nginx.

nginx лог ошибок

И напоследок, если вы не хотите вести журнал ошибок, можете определить error_log следующим образом: error_log /dev/null crit; Однако мы не рекомендуем игнорировать сообщения об ошибках при работе с производственными сайтами, поскольку это может скрыть проблемы или попытки взлома. Помимо уровня warn логов, вы также можете использовать emerg, alert, error, notice, info и debug. Уровень debug улавливает всё, в отличие от уровня emerg, который улавливает только критически важную информацию. Обратите внимание, что если ваш файл nginx.conf или любой другой из файлов внутри /etc/nginx/sites-enabled имеет несколько ошибок, Nginx выведет только первую ошибку при попытке его запуска, или же вы можете проверить правильность его настройки с помощью опции -t. Вам придется исправить первую ошибку и снова запустить nginx -t, чтобы убедиться в отсутствии каких-то других ошибок.

Установка и настройка веб сервера, [email protected]