25 команд Nginx, которые необходимо знать разработчикам и администраторам

Atom

Active member

25 команд Nginx, которые необходимо знать разработчикам и администраторам​


Nginx — один из самых популярных веб-серверов среди пользователей Linux и BSD благодаря богатому набору функций и превосходной гибкости. Если вы веб-разработчик, скорее всего, вы работаете либо с Nginx, либо с сервером Apache. Поэтому важно иметь глубокое понимание того, как Nginx работает из командной строки. К счастью, вы можете улучшить свои навыки DevOps, освоив несколько команд Nginx. Наши редакторы выбрали для вас эти часто используемые команды и предоставили подробное обсуждение для начинающих администраторов Linux. Продолжайте читать, чтобы узнать больше об этих командах.

Полезные команды Nginx для администраторов Linux


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

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


Nginx предлагает несколько установочных пакетов для разных версий Linux. Вы можете найти их здесь. Вы также можете установить Nginx напрямую с помощью менеджера пакетов, как показано ниже.
$ sudo apt install nginx # Ubuntu
$ sudo dnf install nginx # Fedora
$ sudo yum install epel-release && yum install nginx # RHEL and CentOS
Также возможно скомпилировать Nginx из исходников. Подробности об этом вы найдете в этом руководстве.
фото

1. Запустить сервер Nginx


Запустить веб-сервер Nginx очень просто, как показано ниже. Просто используйте одну из приведенных ниже команд для вызова стандартного веб-сервера.
$ sudo service nginx start
Когда вы вводите эту команду, Nginx запускается сценарием инициализации System V. Если вы используете Nginx из системы на базе systemd, такой как Ubuntu Linux 16.04LTS и выше, вам нужно будет использовать приведенную ниже команду.
$ sudo systemctl start nginx
Вы должны получить ответ, показывающий, успешно ли запущен сервер. Другой простой, но эффективный метод — напрямую вызвать Nginx, используя двоичный путь, как показано ниже.
$ sudo /usr/bin/nginx

2. Остановить сервер Nginx


Вы также можете остановить работающий сервер Nginx, используя методы, показанные выше. Однако помните, что когда вы останавливаете работающий сервер Nginx, все связанные с ним системные процессы уничтожаются. Он прекратится, даже если у вас есть активные соединения.
$ sudo service nginx stop
Эта команда остановит процесс Nginx в системах, использующих сценарий инициализации System V. Для машин на базе systemd можно использовать следующую команду.
$ sudo systemctl stop nginx
Однако на загруженных серверах эти команды все равно могут занимать значительное время. Следующая команда демонстрирует, как быстрее остановить службу Nginx.
$ sudo killall -9 nginx

3. Выйти из сервера Nginx


Выход из сервера Nginx аналогичен его остановке, но с одним существенным отличием. Демон Nginx использует изящный подход для выхода в том смысле, что он не прерывает никакие активные соединения. Таким образом, ваши клиентские запросы будут обработаны должным образом перед выключением.
$ sudo service nginx quit
Используйте эту команду, чтобы выйти из сервера Nginx из оболочки Linux. Пользователи, использующие компьютер на базе systemd, могут использовать следующую команду для выполнения этой задачи.
$ sudo systemctl quit nginx
Вы также можете использовать одну из следующих команд Nginx для выхода из работающего сервера.
$ sudo nginx -s quit $ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4. Перезапустите сервер Nginx


Когда вы перезагружаете сервер, процесс Nginx просто останавливается, а затем запускается снова. Вы можете использовать одну из приведенных ниже команд, чтобы перезапустить демон Nginx из командной строки.
$ sudo service nginx restart
Эта команда перезапустит сервер Nginx с помощью сценария инициализации System V. Вы можете использовать systemctl для этого в системе на базе systemd, например в новых выпусках Ubuntu.
$ sudo systemctl restart nginx
Вы также можете сделать это другим способом, как показано в следующем примере.
$ sudo /etc/init.d/nginx restart
Если вы скомпилировали Nginx из исходников, то можете использовать следующую команду.
$ sudo /usr/local/nginx/sbin/nginx -s restart

5. Перезагрузить сервер Nginx


Перезагрузка сервера Nginx немного отличается от его перезапуска. Когда вы перезагрузите сервер, Nginx корректно завершит работу. Это означает, что демон Nginx сначала завершит работу, затем проанализирует файл конфигурации на предмет попыток внесения изменений и запустит новый рабочий процесс, не прерывая операции.
$ sudo service nginx reload $ sudo systemctl status nginx
Первая команда использует сценарий инициализации System V, тогда как последняя команда предназначена для дистрибутивов Linux на базе systemd. Вы также можете вызвать следующий сценарий для выполнения этой работы.
$ sudo /etc/init.d/nginx reload
Вам следует использовать следующую команду, если вы скомпилировали Nginx из исходного кода.
$ sudo /usr/local/nginx/sbin/nginx -s reload
Следующая команда — еще один удобный способ корректного перезапуска вашего сервера Nginx.
$ sudo nginx -s reload

6. Проверьте статус Nginx


Иногда вам может потребоваться просмотреть текущее состояние вашего сервера Nginx, прежде чем выполнять на нем какие-либо операции. Это можно сделать очень быстро, используя одну из приведенных ниже команд. Не забудьте ввести команду sudo или переключиться на пользователя root.
$ sudo service nginx status
Как показано в некоторых предыдущих командах, эта команда работает путем инициализации сценария инициализации System V. Вместо этого вы можете использовать следующую команду для систем, использующих systemd.
$ systemctl status nginx
Другой способ сделать это — напрямую использовать скрипт Nginx init.d, как показано следующей командой.
$ sudo /etc/init.d/nginx status
Если Nginx скомпилирован из исходного кода, то вам подойдет следующая команда.
$ sudo /usr/local/nginx/sbin/nginx -s status

7. Проверьте конфигурацию Nginx


Поскольку существует широкий спектр возможностей настройки Nginx, сетевым администраторам часто приходится настраивать файл конфигурации, чтобы добавлять/разблокировать новые функции. Однако вам всегда следует проверять файл конфигурации на наличие потенциальных ошибок. В противном случае злоумышленники могут воспользоваться ошибками в конфигурации вашего сервера.
$ sudo nginx -t
Это простая команда, которая сделает всю работу за вас. Когда вы запускаете это, вы по сути говорите Nginx проверить файл конфигурации на наличие синтаксических ошибок и воздержаться от запуска сервера. Вы можете использовать следующую команду, чтобы выгрузить результат теста конфигурации на консоль терминала.
$ sudo nginx -T
Вы также можете использовать одну из следующих команд Nginx для проверки конфигурации вашего сервера Nginx.
$ sudo service nginx configtest # System V Init
$ sudo systemctl config nginx # systemd-based
терминал

8. Отправка сигналов в Nginx


Администраторы могут отправлять различные полезные сигналы демону Nginx. Вам нужно будет использовать флаг -s для отправки сигнала в Nginx, а затем самого сигнала. Мы уже видели сигналы в действии, когда использовали их для выхода и перезагрузки нашего сервера Nginx. Здесь мы указываем их по порядку.
$ sudo nginx -s stop # stops a running Nginx server
$ sudo nginx -s quit # quits Nginx server
$ sudo nginx -s reload # gracefully restarts Nginx
$ sudo nginx -s reopen # reopens server log file
Однако ваша версия Nginx должна быть не ниже 0.7.53. В противном случае вы не сможете отправлять сигналы вашим процессам Nginx.

9. Отображение информации о версии Nginx


Некоторые новые функции Nginx доступны только в последних версиях. Поэтому администраторы могут столкнуться с некоторыми проблемами совместимости на устаревших серверах. Вы можете легко определить свою версию Nginx, чтобы увидеть, связаны ли ваши проблемы с версией сервера или нет.
$ sudo service nginx -v # uses System V Init
$ sudo systemctl -v nginx # for systemd-based distributions
Следующие команды можно использовать для отображения дополнительной информации об установке Nginx, такой как переменные конфигурации и версия компилятора.
$ sudo service nginx -V $ sudo systemctl -V nginx
Кроме того, если вы используете сервер Linux на базе Ubuntu или Debian, вы можете использовать следующую команду, чтобы узнать свою версию Nginx.
$ sudo apt-cache policy nginx

10. Показать страницу помощи


Страница справки Nginx — отличный ориентир как для начинающих, так и для опытных администраторов Linux. Вы можете использовать одну из следующих команд Nginx, чтобы просмотреть эту ссылку из эмулятора терминала Linux.
$ sudo service nginx -h # uses System V Init
$ sudo systemctl -h nginx # for systemd-based distributions
Вы также можете использовать следующие команды для выполнения этой работы.
$ sudo service nginx -? # uses System V Init
$ sudo systemctl -? nginx # for systemd-based distributions
Обращение к странице справки всегда является отличным выбором, поскольку позволяет быстро ознакомиться с опциями, доступными пользователю.

11. Используйте альтернативную конфигурацию


Существует бесконечный список возможностей настройки, предлагаемых веб-серверами Nginx. Администраторы могут легко настроить файл конфигурации Nginx для добавления дополнительных функций на свой сервер. Файл конфигурации Nginx по умолчанию в большинстве систем — /etc/nginx/nginx.conf. Однако зачастую рекомендуется сначала реализовать настройки в альтернативном файле конфигурации.
$ sudo nginx -c ~/test.conf
Обратите внимание: мы предполагаем, что ваш новый файл конфигурации называется test.conf. Замените эту часть фактическим именем вашего файла конфигурации. Теперь вы можете протестировать свои новые конфигурации, используя команду ниже.
$ sudo nginx -t -c ~/test.conf
Вы также можете указать Nginx искать конфигурацию по умолчанию в другом каталоге при компиляции из исходного кода. Просто передайте этот каталог при настройке установки.
# ./configure —conf-path=/etc/some/other/nginx.conf

12. Подавить сообщения, не содержащие ошибок


Получение сообщений об ошибках при тестировании новых конфигураций — это нормально. Однако при проверке настроек вы также получите много ненужной информации. К счастью, демон Nginx предлагает простой вариант подавления этих сообщений, не связанных с ошибками, как показано ниже.
$ sudo nginx -q -t -c ~/test.conf
Эта команда проверит пользовательский файл конфигурации с именем test.conf и исключит ненужную информацию из выходных данных. Это весьма полезно для задач удаленного администрирования сервера.

13. Изменить глобальную директиву


Глобальная директива содержит все параметры конфигурации, доступные вашему серверу Nginx. Это один из самых чувствительных разделов вашего веб-сервера, требующий серьезного внимания. Параметр -g позволяет администраторам определять персонализированные директивы Nginx для своих веб-серверов.
$ sudo nginx -g «pid /var/run/test.pid; worker_processes 2;»
Эта команда указывает глобальные директивы Nginx для PID и определяет количество рабочих процессов, в данном случае 2. Теперь мы можем проверить это, используя альтернативный файл конфигурации, использованный ранее.
$ sudo nginx -t -c ~/test.conf -g «pid /var/run/test.pid; worker_processes 2;»

14. Изменить путь префикса Nginx


Префиксный путь содержит все файлы, используемые вашим веб-сервером Nginx. Это также тот же каталог, который используется при настройке относительных путей (кроме источников библиотек). По умолчанию Nginx использует в качестве префикса каталог /usr/local/nginx. Команда ниже демонстрирует, как мы можем переопределить это из командной строки.
$ sudo nginx -p /path/to/new/prefix
Флаг -p позволяет нам передать новое местоположение префикса. Это часто бывает полезно при тестировании новых серверов. Однако эта опция недоступна для серверов Nginx старше версии 0.7.53.

15. Проверьте модуль stub_status


Модуль stub_status предоставляет некоторые очень важные показатели Nginx. Администраторы часто используют его для мониторинга своих почтовых серверов Linux или прокси-серверов. Хотя все готовые двоичные файлы Nginx поставляются с этим модулем, на вашем сервере Nginx его может не быть, если вы скомпилировали Nginx из исходного кода. Вы можете использовать следующую команду, чтобы проверить, есть ли она у вас или нет.
$ sudo nginx -V 2>&1 | grep —color — —with-http_stub_status_module
Если вы обнаружите, что вам не хватает этого модуля, вы всегда можете пересобрать Nginx из исходников. Просто включите параметр –with-http_stub_status_module при настройке Nginx, как показано ниже.
$ ./configure —with-http_stub_status_module
терминал

16. Проверьте путь Nginx


Существует несколько команд Nginx для проверки пути к вашей установке Nginx. Как и обычные команды терминала Linux, вы всегда можете использовать команду that/whereis для проверки пути Nginx.
$ which nginx $ whereis nginx
Приведенные выше команды отобразят все системные местоположения, содержащие файлы, связанные с вашей настройкой Nginx. Вы можете сделать это другим способом, используя команду ps и найдя необходимую информацию.
$ ps aux | grep nginx
Теперь вы должны четко видеть местоположение вашего демона Nginx. Это очень полезно для разработчиков, у которых нет низкоуровневых привилегий для серверной машины.

17. Найдите PID Nginx


PID или идентификатор процесса — это уникальный номер, используемый для различения процессов в Linux и Unix-подобных системах. Мы можем отправлять различные сигналы на наш сервер Nginx, используя соответствующий PID. Этот PID можно найти с помощью одной из следующих команд.
$ ps aux | grep [n]ginx
$ pgrep nginx
$ cat /run/nginx.pid
Таким образом, мы можем использовать либо команду pgrep, либо команду vanilla grep в сочетании с ps. Не волнуйтесь, если вы не понимаете, как работает «grep». Мы уже публиковали ресурсоемкое руководство по командам grep в Linux.

18. Найти файлы журналов


Файлы журналов содержат много ценной информации как для системных администраторов, так и для разработчиков. У Nginx есть два файла журнала по умолчанию, состоящие из документов access.log и error.log. Они расположены по адресу /var/log и их можно просмотреть с помощью следующей команды.
$ ls /var/log/nginx/*.log
Теперь вы должны увидеть файлы журналов, упомянутые выше. Как следует из названия, access.log содержит информацию о посетителях вашего сайта, а error.log содержит предупреждения/подробные сведения о неправильных конфигурациях. Однако вам нужно будет включить эти два журнала из файла конфигурации Nginx, прежде чем вы сможете их использовать.

19. Установить виртуальные хосты


Виртуальные хосты позволяют администраторам серверов запускать более одного веб-сайта на одном серверном компьютере. Это часто бывает полезно, поскольку вы можете совместно использовать свои вычислительные процессы для одновременного запуска нескольких сайтов. Однако термин виртуальный хост обычно ассоциируется с серверами Apache. В мире Nginx они известны как «Серверные блоки».
$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com
Вы можете легко включить виртуальные хосты на сервере Nginx, используя эту простую символическую ссылку. Просто удалите символическую ссылку, если хотите отключить виртуальные хосты.

20. Просмотр скомпилированных модулей Nginx


Как вы видели в некоторых предыдущих командах Nginx, при установке демона также устанавливаются некоторые важные модули. Мы можем легко просмотреть эти модули Nginx, используя команду ниже.
$ sudo 2>&1 nginx -V | tr — — ‘\n’ | grep _module
Эта команда использует несколько инструментов командной строки Linux и отфильтровывает ненужную информацию, чтобы отображать только модули. Поскольку Nginx имеет множество модулей, эта команда может быть полезна для проверки того, какие модули скомпилированы для вашего сервера.

21. Включить/отключить службу Nginx


Включение службы Nginx позволяет серверу автоматически запускаться во время загрузки. Это важно для выделенных серверов, поскольку в противном случае запросы пользователей могут быть прерваны. Мы можем очень легко включить автоматический запуск Nginx, используя команду ниже.
$ sudo service nginx enable # System V Init
$ sudo systemctl enable nginx # systemd-based systems
Эти простые, но эффективные команды позволят максимально сократить время простоя вашего сервера. При желании вы также можете отключить автозапуск. Просто используйте одну из следующих команд.
$ sudo update-rc.d -f nginx disable
$ sudo systemctl disable nginx

22. Обновите Nginx на лету


Nginx позволяет администраторам обновлять двоичный файл и/или файл конфигурации «на лету». Это означает, что ваши клиентские запросы не будут прерываться из-за обновлений сервера. Для этого сначала нам нужно найти PID главного процесса Nginx. Мы можем сделать это с помощью простой команды, которую мы уже продемонстрировали.
$ cat /run/nginx.pid
Ваш новый двоичный файл Nginx уже должен быть готов. Создайте новый набор главных/рабочих процессов Nginx, которые используют новый двоичный файл, с помощью приведенной ниже команды.
$ sudo kill -s USR2 `cat /run/nginx.pid`
Теперь завершите рабочие процессы, используемые первым главным процессом, с помощью следующей команды.
$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`
Следуйте этому, убив старый главный процесс.
$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23. Настройте Nginx в Chroot Jail


Chroot-тюрьма для вашего сервера Nginx обеспечит дополнительный уровень безопасности в случае потенциальных взломов. Администраторы часто используют этот метод, чтобы убедиться, что их серверы изолированы и безопасны в небольшом разделе файловой системы Linux. Используйте следующие команды, чтобы настроить сервер Nginx внутри chroot-тюрьмы.
D=/nginx
mkdir -p $D
mkdir -p $D/etc
mkdir -p $D/dev
mkdir -p $D/var
mkdir -p $D/usr
mkdir -p $D/usr/local/nginx
mkdir -p $D/tmp
chmod 1777 $D/tmp
mkdir -p $D/var/tmp
chmod 1777 $D/var/tmp
mkdir -p $D/lib64
ls -l /dev/{null,random,urandom}
/bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx
Вам нужно будет запустить их от имени пользователя root. Теперь найдите общие библиотеки, используя команду ниже.
# ldd /usr/local/nginx/sbin/nginx
Скопируйте все библиотеки одну за другой, как показано ниже.
# cp /lib64/libpcre.so.0 $D/lib64
Вам также потребуется скопировать /etc и несколько других каталогов.
# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,
prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc
(примечание. Верхние две строки пишутся в одну строчку без переноса)
# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc
Ваша chroot-тюрьма теперь готова для Nginx. Просто завершите старую службу и запустите новую, используя следующую команду.
# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24. Запустите Nginx внутри Docker


Docker-контейнеры стали чрезвычайно популярными благодаря своей гибкости и надежности. Вы можете легко создать и запустить веб-сервер Nginx изнутри контейнера докера. Следующая команда извлекает официальный образ Nginx и создает экземпляр сервера, используя конфигурацию по умолчанию.
$ docker run —name nginx-server -P -d nginx
Вы можете поддерживать постоянное хранилище, используя следующую простую команду.
$ sudo docker run —name nginx-server -v /var/www:/usr/share/nginx/html:ro \ -v /var/nginx/conf:/etc/nginx:ro -P -d nginx
В этом посте вы можете найти больше полезных команд Docker. Взгляните на него, если ищете информацию, касающуюся докера.

25. Запустите Nginx внутри LXD


LXD считается контейнером Linux следующего поколения и предлагает поразительный набор функций. Вы также можете использовать Nginx через контейнеры LXD. Взгляните на следующие команды Nginx для LXD.
$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server — sudo —user ubuntu —login
$ sudo apt update $ sudo apt install -y nginx $ sudo systemctl reload nginx
Сначала мы создали контейнер под названием nginx-server, а затем запустили в нем оболочку. Затем мы обновили список пакетов и установили веб-сервер Nginx внутри этого контейнера. Последняя команда просто перезагружает сервер.

Завершение мыслей


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

Источник
 
Сверху