Nginx Essentials: Устранение неполадок при установке и настройке

Вступление

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

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

Как использовать это руководство:

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

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

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

  • В этом руководстве предполагается, что вы работаете с версией Nginx, установленной из репозиториев по умолчанию дистрибутива на основе Debian. Обратите внимание, что некоторые соглашения, описанные в этом руководстве, отсутствуют в других дистрибутивах или версиях Nginx из других источников.

Установка Nginx

Используя + sudo apt-get, обновите индексы пакетов и затем установите сервис:

sudo apt-get update
sudo apt-get install nginx

Для получения более подробной информации о процессе установки и настройки, следуйте нашему руководству на Как установить Nginx в Ubuntu 16,04.

Проверка статуса Nginx

Вы можете проверить, работает ли Nginx на вашем компьютере, введя следующее в вашу командную строку:

sudo systemctl status nginx

Включение Nginx

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

sudo systemctl disable nginx

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

sudo systemctl enable nginx

Остановка, запуск и перезагрузка Nginx

Чтобы остановить ваш уже работающий сервер Nginx:

sudo systemctl stop nginx

Когда сервер остановлен, вы можете запустить его снова, набрав:

sudo systemctl start nginx

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

sudo systemctl restart nginx

У вас также есть возможность перезагрузить Nginx, не прерывая соединения:

sudo systemctl reload nginx

Чтобы узнать больше о + systemd + и команде + systemctl +, ознакомьтесь с этой https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal Введение в основы systemd.

Создание корня документа для статического сайта

При использовании веб-сервера Nginx серверные блоки (аналогично виртуальным хостам в Apache) используются для размещения более одного домена на одном сервере. Каждый серверный блок имеет свой собственный корень документа, специальный каталог, который Nginx должен проверить, прежде чем обслуживать содержимое домена.

Команды в блоке ниже создадут новый корень документа, изменят права владения корнем документа для вашего пользователя без полномочий root и изменят права доступа для каждого подкаталога в + / var / www / +.

sudo mkdir -p /var/www//html
sudo chown -R $USER:$USER /var/www//html
find /var/www -type d -exec chmod  {} \;

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

Создание корня документа для динамически обработанного сайта

При использовании Nginx с определенными программами (например, PHP-FPM) для создания динамически обрабатываемого сайта, вам может потребоваться настроить разрешения для некоторых файлов, чтобы разрешить групповой доступ + www-data + или даже владение, особенно если это необходимо уметь писать в каталог.

Команды в блоке ниже создадут новый корень документа, изменит владение корнем документа на группу + www-data + и изменит разрешения каждого подкаталога в + / var / www +.

sudo mkdir -p /var/www//html
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www -type d -exec chmod  {} \;

Чтобы узнать больше о разрешениях, см. Наш introduction для Linux. Также может быть полезно ознакомиться с нашим учебником по адресу https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04 [ Как настроить серверные блоки Nginx (виртуальные хосты) в Ubuntu 16.04], в котором подробно описывается создание и изменение корней документов.

Включение файлов конфигурации

Мы можем включить файл конфигурации блока сервера, создав символическую ссылку из каталога + sites-available + на каталог + sites-enabled +, который Nginx будет читать при запуске.

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

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

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

sudo systemctl reload nginx

Решение проблем с памятью хеш-памяти

Nginx использует хеш-таблицы (которые организованы в «корзины») для быстрой обработки статических данных, таких как имена серверов или типы MIME. Таким образом, если вы добавили несколько имен серверов, есть вероятность, что размер хеш-памяти имен серверов больше не будет достаточным, и вы увидите ошибку + server_names_hash_bucket_size + при внесении изменений. Эту проблему можно решить, изменив одно значение в вашем файле + / etc / nginx / nginx.conf +.

Чтобы открыть этот файл конфигурации, введите:

sudo nano /etc/nginx/nginx.conf

В этом файле найдите директиву + server_names_hash_bucket_size +. Удалите символ + # +, чтобы раскомментировать строку, и увеличьте значение директивы на следующую степень двух:

/etc/nginx/nginx.conf

http {
   . . .

   server_names_hash_bucket_size ;

   . . .
}

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

Проверка вашего файла конфигурации

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

sudo nginx -t

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

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

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

sudo systemctl restart nginx

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

Работая с Nginx, вы можете часто получать доступ к следующим файлам и каталогам:

содержание

  • + / var / www / html: это местоположение корня документа по умолчанию, из которого подается фактический веб-контент. Корень документа можно изменить, изменив конфигурационные файлы Nginx.

Конфигурация сервера

  • + / etc / nginx / +: каталог конфигурации Nginx по умолчанию, в котором можно найти все ваши файлы конфигурации Nginx.

  • + / etc / nginx / nginx.conf +: основной файл конфигурации Nginx. Это может быть направлено на внесение глобальных изменений в конфигурацию Nginx.

  • + / etc / nginx / sites-available / default +: файл блокировки по умолчанию для сервера Nginx. Другие серверные блоки для сайта также хранятся в каталоге + sites-available +, хотя они не будут использоваться, если они не связаны с каталогом + sites-enabled +.

  • + / etc / nginx / sites-enabled / +: каталог, в котором хранятся «серверные блоки» для каждого сайта. Как правило, они создаются путем ссылки на файлы конфигурации, которые находятся в каталоге + sites-available +.

Журналы сервера

  • + / var / log / nginx / access.log +: каждый запрос к вашему веб-серверу записывается в этот файл журнала, если Nginx не настроен на иное.

  • + / var / log / nginx / error.log +: любые ошибки Nginx будут записываться в этот журнал.

  • Чтобы получить доступ к системным журналам процесса Nginx, выполните следующую команду:

sudo journalctl -u nginx

Заключение

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