Как перезапустить nginx на windows

Обновлено: 03.07.2024

Я сталкиваюсь с коротким временем простоя. Как я могу избежать этого?

Это команды командной строки? Я никогда не видел, чтобы кто-нибудь заключал в кавычки всю команду sudo, это может быть необязательно. Просто общий комментарий: я думаю, что стандартная / рекомендуемая практика - создавать мягкую / символическую ссылку для конфигурации вашего сайта sites-enabled , а не копировать ее. Не связано с вашей конкретной проблемой, но вы можете рассмотреть это. Вы не должны сталкиваться с простоями. kill HUP это способ сделать изящную перезагрузку в Nginx.

Запустить service nginx reload или /etc/init.d/nginx reload

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

Иногда вы можете захотеть начать с sudo

Когда я запускаю команду в CentOS, она продолжает говорить «Использование /etc/init.d/nginx (start..stop . restart..reload)» .. и это именно то, как я ее использовал. В файле /init.d/nginx я обнаружил kill -HUP cat $PIDFILE || echo -n "не могу перезагрузить" Вы знаете, в чем разница между service nginx reload и nginx -s reload ? Если я запускаю первый, я получаю этот вывод:, Reloading nginx configuration: nginx. но мои изменения не обновляются. Если я запускаю последний, я не получаю вывод, но мои изменения отражаются. Я только что попробовал это после добавления log_not_found директивы, но обнаружил, что мне нужно сделать перезагрузку, чтобы она заработала. Я думаю, перезагрузка не работает для всех директив?

Бегать /usr/sbin/nginx -s reload

Это лучший способ. Потому что ваш сервер не отключается, если в вашей конфигурации есть ошибки (в этом случае просто отображаются ошибки). если nginx по умолчанию pid не находится в расположении по умолчанию, нужно '-p'. то есть: `/ opt / gitlab / внедренный / sbin / nginx -s перезагрузить -p / var / opt / gitlab / nginx`

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

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

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

Если конкретная служба испытывает простои во время перезагрузки, это можно обойти, запустив одну и ту же службу на нескольких серверах, предпочтительно с использованием балансировщика нагрузки. В этом случае вы можете вынуть один сервер за раз и перезагрузить / перезапустить его. Затем он может быть повторно добавлен после подтверждения, что все в порядке.

В этом руководстве объясняется, как запустить, остановить и перезапустить Nginx на серверах Linux.

Подготовка

В инструкциях предполагается, что вы вошли в систему как пользователь root или пользователь с привилегиями sudo .

Большинство текущих дистрибутивов Linux используют SystemD в качестве системы инициализации и диспетчера служб по умолчанию. Старые дистрибутивы основаны на SysVinit и используют сценарии инициализации для управления службами.

И сервисные блоки SystemD, и скрипт SysVinit принимают следующие аргументы для управления сервисом Nginx:

  • start : start службу Nginx.
  • stop : завершает работу службы Nginx.
  • restart : останавливает, а затем запускает службу Nginx.
  • reload : плавно перезапускает службу Nginx. При перезагрузке основной процесс Nginx завершает дочерние процессы, загружает новую конфигурацию и запускает новые дочерние процессы.
  • status : показывает статус услуги.

Команды для управления службой Nginx одинаковы для всех дистрибутивов Linux.

Запуск, остановка и перезапуск Nginx с помощью systemctl

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

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

Выполните команду ниже, чтобы перезагрузить службу Nginx:

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

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

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

Запуск, остановка и перезапуск Nginx с помощью SysVinit

Более старые (EOLed) версии Ubuntu, CentOS и Debian используют сценарии init.d для запуска, остановки и перезапуска демона Nginx.

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

Запустите сервис Nginx:

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

Выводы

Мы показали вам, как запускать, останавливать и перезапускать веб-сервер Nginx в системах Linux.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.

В этом руководстве даётся начальное введение в nginx и описываются некоторые простые задачи, которые могут быть решены с его помощью. Предполагается, что nginx уже установлен на компьютере читателя. Если нет, см. Установка nginx. В этом руководстве описывается, как запустить и остановить nginx и перезагрузить его конфигурацию, объясняется, как устроен конфигурационный файл, и описывается, как настроить nginx для раздачи статического содержимого, как настроить прокси-сервер на nginx, и как связать nginx с приложением FastCGI.

У nginx есть один главный и несколько рабочих процессов. Основная задача главного процесса — чтение и проверка конфигурации и управление рабочими процессами. Рабочие процессы выполняют фактическую обработку запросов. nginx использует модель, основанную на событиях, и зависящие от операционной системы механизмы для эффективного распределения запросов между рабочими процессами. Количество рабочих процессов задаётся в конфигурационном файле и может быть фиксированным для данной конфигурации или автоматически устанавливаться равным числу доступных процессорных ядер (см. worker_processes).

Как работают nginx и его модули, определяется в конфигурационном файле. По умолчанию, конфигурационный файл называется nginx.conf и расположен в каталоге /usr/local/nginx/conf , /etc/nginx или /usr/local/etc/nginx .

Запуск, остановка, перезагрузка конфигурации

Чтобы запустить nginx, нужно выполнить исполняемый файл. Когда nginx запущен, им можно управлять, вызывая исполняемый файл с параметром -s . Используйте следующий синтаксис:

Где сигнал может быть одним из нижеследующих:

  • stop — быстрое завершение
  • quit — плавное завершение
  • reload — перезагрузка конфигурационного файла
  • reopen — переоткрытие лог-файлов

Например, чтобы остановить процессы nginx с ожиданием окончания обслуживания текущих запросов рабочими процессами, можно выполнить следующую команду:

Команда должна быть выполнена под тем же пользователем, под которым был запущен nginx.

Изменения, сделанные в конфигурационном файле, не будут применены, пока команда перезагрузить конфигурацию не будет вручную отправлена nginx’у или он не будет перезапущен. Для перезагрузки конфигурации выполните:

Посылать сигналы процессам nginx можно также средствами Unix, такими как утилита kill . В этом случае сигнал отправляется напрямую процессу с данным ID. ID главного процесса nginx записывается по умолчанию в файл nginx.pid в каталоге /usr/local/nginx/logs или /var/run . Например, если ID главного процесса равен 1628, для отправки сигнала QUIT, который приведёт к плавному завершению nginx, нужно выполнить:

Для просмотра списка всех запущенных процессов nginx может быть использована утилита ps , например, следующим образом:

Дополнительную информацию об отправке сигналов процессам nginx можно найти в Управление nginx.

Структура конфигурационного файла

Раздача статического содержимого

Во-первых, создайте каталог /data/www и положите в него файл index.html с любым текстовым содержанием, а также создайте каталог /data/images и положите в него несколько файлов с изображениями.

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

В общем случае конфигурационный файл может содержать несколько блоков server , различаемых по портам, на которых они слушают, и по имени сервера. Определив, какой server будет обрабатывать запрос, nginx сравнивает URI, указанный в заголовке запроса, с параметрами директив location , определённых внутри блока server .

В блок server добавьте блок location следующего вида:

Этот блок location задаёт “ / ” в качестве префикса, который сравнивается с URI из запроса. Для подходящих запросов добавлением URI к пути, указанному в директиве root, то есть, в данном случае, к /data/www , получается путь к запрашиваемому файлу в локальной файловой системе. Если есть совпадение с несколькими блоками location , nginx выбирает блок с самым длинным префиксом. В блоке location выше указан самый короткий префикс, длины один, и поэтому этот блок будет использован, только если не будет совпадения ни с одним из остальных блоков location .

Далее, добавьте второй блок location :

Он будет давать совпадение с запросами, начинающимися с /images/ ( location / для них тоже подходит, но указанный там префикс короче).

Итоговая конфигурация блока server должна выглядеть следующим образом:

Чтобы применить новую конфигурацию, запустите nginx, если он ещё не запущен, или отправьте сигнал reload главному процессу nginx, выполнив:

В случае если что-то работает не как ожидалось, можно попытаться выяснить причину с помощью файлов access.log и error.log из каталога /usr/local/nginx/logs или /var/log/nginx .

Настройка простого прокси-сервера

Одним из частых применений nginx является использование его в качестве прокси-сервера, то есть сервера, который принимает запросы, перенаправляет их на проксируемые сервера, получает ответы от них и отправляет их клиенту.

Мы настроим базовый прокси-сервер, который будет обслуживать запросы изображений из локального каталога и отправлять все остальные запросы на проксируемый сервер. В этом примере оба сервера будут работать в рамках одного экземпляра nginx.

Во-первых, создайте проксируемый сервер, добавив ещё один блок server в конфигурационный файл nginx со следующим содержимым:

Это будет простой сервер, слушающий на порту 8080 (ранее директива listen не указывалась, потому что использовался стандартный порт 80) и отображающий все запросы на каталог /data/up1 в локальной файловой системе. Создайте этот каталог и положите в него файл index.html . Обратите внимание, что директива root помещена в контекст server . Такая директива root будет использована, когда директива location , выбранная для выполнения запроса, не содержит собственной директивы root .

Мы изменим второй блок location , который на данный момент отображает запросы с префиксом /images/ на файлы из каталога /data/images так, чтобы он подходил для запросов изображений с типичными расширениями файлов. Изменённый блок location выглядит следующим образом:

Параметром является регулярное выражение, дающее совпадение со всеми URI, оканчивающимися на .jpg , .jpg или .jpg . Регулярному выражению должен предшествовать символ

. Соответствующие запросы будут отображены на каталог /data/images .

Когда nginx выбирает блок location , который будет обслуживать запрос, то вначале он проверяет директивы location, задающие префиксы, запоминая location с самым длинным подходящим префиксом, а затем проверяет регулярные выражения. Если есть совпадение с регулярным выражением, nginx выбирает соответствующий location , в противном случае берётся запомненный ранее location .

Итоговая конфигурация прокси-сервера выглядит следующим образом:

Этот сервер будет фильтровать запросы, оканчивающиеся на .jpg , .jpg или .jpg , и отображать их на каталог /data/images (добавлением URI к параметру директивы root ) и перенаправлять все остальные запросы на проксируемый сервер, сконфигурированный выше.

Чтобы применить новую конфигурацию, отправьте сигнал reload nginx’у, как описывалось в предыдущих разделах.

Существует множество других директив для дальнейшей настройки прокси-соединения.

Настройка проксирования FastCGI

nginx можно использовать для перенаправления запросов на FastCGI-серверы. На них могут исполняться приложения, созданные с использованием разнообразных фреймворков и языков программирования, например, PHP.

Базовая конфигурация nginx для работы с проксируемым FastCGI-сервером включает в себя использование директивы fastcgi_pass вместо директивы proxy_pass , и директив fastcgi_param для настройки параметров, передаваемых FastCGI-серверу. Представьте, что FastCGI-сервер доступен по адресу localhost:9000 . Взяв за основу конфигурацию прокси-сервера из предыдущего раздела, замените директиву proxy_pass на директиву fastcgi_pass и измените параметр на localhost:9000 . В PHP параметр SCRIPT_FILENAME используется для определения имени скрипта, а в параметре QUERY_STRING передаются параметры запроса. Получится следующая конфигурация:

Таким образом будет настроен сервер, который будет перенаправлять все запросы, кроме запросов статических изображений, на проксируемый сервер, работающий по адресу localhost:9000 , по протоколу FastCGI.

В этой статье предлагается установить Nginx и настроить его как обратный прокси-сервер.

Предварительные требования

Цель этой части

Наши цели в этой части:

Что такое Nginx?

Nginx — это популярный, легкий и быстрый веб-сервер. Он может работать как на Linux, так и Windows, и его можно настроить как обратный прокси-сервер.

Что такое daemon?

Установка Nginx с помощью APT

Установка Nginx проста. Запустите sudo apt install nginx команду, чтобы установить программу на виртуальной машине Ubuntu.

Снимок экрана команды судо.

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

Снимок экрана команды whereis.

Если вы запустите дистрибутив, помимо Ubuntu или Debian, вы можете найти эквивалентную команду установки диспетчера пакетов или инструкции из официальной документации по установке Nginx.

Управление службами с помощью systemctl

Если вы не видите, что nginx запущен, вы можете начать его явно с помощью запуска sudo systemctl start nginx . Хотя это упражнение будет демонстрировать команды для Nginx, эти команды используются для настройки веб-приложения для автоматического запуска в systemctl качестве daemon.

После завершения установки Nginx уже настроен для автоматического запуска. Nginx выполняется как daemon. Состояние деймона можно проверить с помощью systemctl.

Команда systemctl используется для управления "службами" для таких задач, как отображение состояния службы или ее запуск и остановка. Некоторые доступные параметры: запуск, остановка, перезапуск, включить, отключить и состояние. Чтобы проверить состояние Nginx, запустите systemctl status nginx .

Снимок экрана команды systemctl.

Эта команда создает некоторые полезные сведения. Как показано на этом скриншоте, Nginx находится в состоянии, а iD процесса экземпляра active (running) Nginx — 8539. Кроме того, enabled обратите внимание на и vendor preset: enabled заявления. Enabled означает, что этот daemon начнется при перезапуске машины и означает, что nginx включен по умолчанию vendor preset: enabled при установке. Поэтому при запуске сервера Nginx запустится автоматически.

Тестирование установки Nginx

По умолчанию Nginx прослушивает порт 80. Так как она запущена, вы должны иметь доступ к главной странице Nginx при просмотре localhost. Используйте curl для тестирования Nginx с помощью запуска curl localhost . Желтый выделенный текст на следующем скриншоте показывает веб-страницу Nginx по умолчанию. Таким образом, nginx работает:

Снимок экрана команды завитка.

параметры команд systemctl

Службами или daemons можно управлять с помощью systemctl команды. Для запуска, остановки или внесения изменений требуется доступ к суперустановке. Поэтому необходимо добавить префикс в sudo эти команды.

Перезапустите daemons

Может потребоваться время от времени перезапустить daemons. Чтобы перезапустить daemon, запустите sudo systemctl restart <daemon_name> . Чтобы перезапустить Nginx, запустите sudo systemctl restart nginx . Убедитесь, что вы проверяете состояние Nginx до и после запуска этой команды, чтобы отслеживать изменения в ID процесса.

Stop daemons

Чтобы остановить деймон, запустите sudo systemctl stop <daemon_name> . Чтобы остановить Nginx, запустите, а затем проверьте sudo systemctl stop nginx состояние Nginx, снова systemctl status nginx забегая. На этот раз служба отображается как неактивной (мертвой), но включенной. Это означает, что, хотя служба не запущена, она будет запущена автоматически после перезапуска сервера.

Снимок экрана команды остановки.

Команда также отображает несколько строк предыдущих записей systemctl status журнала для daemon.

После остановки Nginx запустите curl localhost снова.

Подключение отказано, так как для входящих трафика в порту 80 не прослушивается ничего.

Скриншот сайта BuggyAmb.

Отключение деймонов

Отключение деймона отличается от остановки деймона. Деймон с отключенным доступом может работать, но он не будет автоматически запущен после перезапуска сервера. Чтобы отключить daemon Nginx, запустите, а затем проверьте sudo systemctl disable nginx состояние Nginx.

Снимок экрана команды отключения.

На этом скриншоте показано, что Nginx не работает и отключен. Это означает, что Nginx не будет автоматически запускаться после перезапуска.

Запуск daemons

Чтобы запустить daemon, запустите sudo systemctl start <daemon_name> . Чтобы запустить Nginx, запустите службу и снова sudo systemctl start nginx проверьте состояние службы.

Снимок экрана команды начните.

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

Включить daemons

Включение службы означает, что она будет запускаться автоматически после перезапуска. Чтобы включить Nginx, запустите и снова проверьте состояние sudo systemctl enable nginx Nginx.

Снимок экрана команды включить.

На этом скриншоте показано, что Nginx запущен, и он будет запущен после перезапуска сервера.

Вот необходимая конфигурация. Выделены некоторые ключевые части.

Эта конфигурация указывает на следующее:

Строка server_name _ в коде. Это используется в качестве директивы catch-all. Если вы хотите узнать больше о server_name, обратитесь к официальной документации.

Изменения конфигурации кажутся простыми. Этот код будет заменять раздел server директивы в файле конфигурации. Но где файл конфигурации?

Поиск правильного файла конфигурации Nginx

Основной файл конфигурации Nginx /etc/nginx/nginx.conf . Для проверки конфигурации используйте cat /etc/nginx/nginx.conf команду и поиск директивы сервера.

Снимок экрана команды кошки.

Прокрутите конфигурацию, чтобы найти директиву сервера. Вы должны ожидать, что его не найти. Мы можем поместить нужные изменения конфигурации в файл конфигурации. Однако в идеале не следует заменять исходный файл конфигурации. Это необходимо для предотвращения ошибок конфигурации, которые могут помешать правильному запуску сервера. Раздел server не в основном файле конфигурации. Если вы прокрутите файл конфигурации, вы обнаружите, что существуют include некоторые директивы.

Снимок экрана включить команду.

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

  • Nginx загружает конфигурацию из каждого файла .conf, расположенного в каталоге /etc/nginx/conf.d.
  • Nginx загружает конфигурации из каждого файла, расположенного в каталоге /etc/nginx/sites-enabled.

При проверке этих каталогов в /etc/nginx/conf.d не будут находиться файлы конфигурации. Тем не менее, существует один файл в /etc/nginx/sites-enabled.

Снимок экрана команды conf.

Файл конфигурации по умолчанию выглядит как первый кандидат для хозяйской конфигурации, которую мы ищем. Если вы проверяете файл /etc/nginx/sites-enabled/default с помощью, вы увидите, что директива сервера по умолчанию находится в cat /etc/nginx/sites-enabled/default следующем коде.

Снимок экрана данных по умолчанию.

Поэтому для изменения конфигурации необходимо изменить файл /etc/nginx/sites-enabled/default.

Изменение файла конфигурации с помощью vi

Всегда архивуй файлы, которые вы изменяете. Если после редактирования что-то пошло не так, вы можете использовать эту копию для восстановления файла до прежнего состояния. В этом случае запустите cp /etc/nginx/sites-enabled/default

/nginx-default-backup копирование файла конфигурации в домашний каталог. Имя файла резервного копирования nginx-default-backup будет . Обратите внимание, что резервное копирование не было выполнено в том же каталоге, что и исходный файл. Это потому, что Nginx загружает все файлы конфигурации из этого каталога, и вы не хотите нарушать конфигурацию, загрузив две разные версии директивы сервера.

sudo vi /etc/nginx/sites-enabled/default Запустите, чтобы изменить файл конфигурации и заменить директиву сервера, как показано на следующем скриншоте.

Снимок экрана команды vi.

Вот несколько советов и приемов для редактирования файлов с помощью vi:

Изменения сохраняются, и для их вступили в силу, необходимо перезапустить службу Nginx. Перед перезапуском службы можно запустить команду sudo nginx -t для проверки файла конфигурации. Когда эта команда выполняется, Nginx проверяет синтаксис файла конфигурации, а затем пытается открыть файлы, которые ссылались в файле конфигурации.

Снимок экрана команды t.

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

Необходимо перезапустить Nginx, чтобы изменения вступили в силу:

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

Снимок экрана команды wget.

Устранение проблемы прокси-сервера Nginx

На предыдущем скриншоте см. эту информацию:

Первая и вторая строки указывают на возможность разрешения локальных проблем и подключения в 127.0.0.1:80 розетке. Поэтому nginx должен быть запущен. Чтобы убедиться в этом, можно выполнить systemctl status nginx команду.

Чтобы начать устранение неполадок, запустите ту же netstat команду, что и раньше. На этот раз используйте grep для фильтрации порта приложения 5000. Затем запустите netstat -tlp | grep 5000 .

Снимок экрана команды netstat.

Проверка журналов Nginx

Если вы cat /etc/nginx/nginx.conf запустите снова, а затем посмотрите logging settings на , вы должны заметить следующее.

Снимок экрана сведений журнала.

Это показывает, что у Nginx есть два типа журналов: журналы доступа и журналы ошибок. Они хранятся в каталоге /var/log/nginx/.

Журналы доступа похожи на файлы журналов IIS. Быстрая проверка контента показывает, что они похожи на следующий снимок экрана.

Снимок экрана команды доступа.

Снимок экрана сведений об ошибках.

Обходной путь

Снимок экрана сведений о aspnet.

Снимок экрана команды curllocalhost.

Дальнейшие действия

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

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

Читайте также: