Вступление
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, мы рекомендуем пройти следующие уроки.