Nginx websocket
Со стороны Nginx websocket — дополнительные заголовки при проксировании. Ниже приведен пример конфигурационного файла Nginx для приложения на NodeJS, использующего вебсокеты.
Мониторинг, настройка и обслуживание Linux серверов
Веб сервер Nginx является самым популярным решением в нагруженных системах, причина в скорости работы и очень большом функционале, который предлагает пакет.
Nginx является российской разработкой и самая полная документация доступна на официальном сайте на русском языке.
На Debian и Ubuntu Nginx устанавливается в большинстве случаев из стандартных репозиториев
apt-get update
apt-get install nginx
Для Wheezy требуется подключать backport-репозитории и устанавливать пакет из них. Также часто приходится собирать Nginx из исходных кодов — это нужно когда планируется его использование для специальных задач и требуется подключить модули, которых нет в конфигурации пакета, доступного для установки из репозитория.
Настройка производится в конфигурационных файлах главным из которых является nginx.conf. Все остальные (в том числе добавленные администратором) кофиги подключаются в нем при помощи директивы include.
Чаще всего Nginx используется для проксирования запросов, его ставят на фронтэнд, на бэкенде же работает какой-то пакет, который может обрабатывать скрипты. Обычно это Apache, Unicorn для Ruby или что-то другое. Nginx справляется со статикой.
Со стороны Nginx websocket — дополнительные заголовки при проксировании. Ниже приведен пример конфигурационного файла Nginx для приложения на NodeJS, использующего вебсокеты.
Обработка ошибки в Nginx иногда требует менять код ответа и направлять запросы в определенный location. Ниже приведен фрагмент конфигурационного файла, позволяющий это делать.
Nginx proxy cache или серверное кэширование Nginx — позволяет сохранять на сервере результаты выполнения запросов и отдавать их повторно другим пользователям.
X-Forwarded-Proto — переменная окружения, которая задействует когда применяется веб-сервер с проксированием. Обычно Nginx и Apache. Без X-Forwarded-Proto (или переменной окружения HTTPS) сайт с такой конфигурацией часто не будет работать по https.
При добавлении очередного сайта на нагруженном сервере иногда можно столкнуться с ошибкой could not build the server_names_hash. Nignx при этом перестает запускаться.
upstream timed out 101- ошибка, которая возникает при превышении лимита ожидания выполнения скрипта веб-сервером. Часто при таймауте соединения клиент будет видеть 504 ошибку.
Ошибка 400 bad request nginx означает, что сделан неверный запрос. Если речь идет о запросах к базе данных или API — причина может быть в работе бэкенда. Например, недостаточное количество знаков в поле БД.
В Nginx unix socket — способ подключения к бэкенду в виде PHP-FPM, позволяющий избежать сетевых запросов и дающий значительный прирос в скорости работы.
Nginx часто применяется в веб-проектах не в малой степени потому, что позволяет временно сохранять контент сайтов. В Nginx кэширование настраивается очень просто (по сравнению с другими хранилищами) и является хорошим средством оптимизации работы веб-сервера.
NodeJS в production — запуск проекта, разработка которого завершена на сервере, к которому есть общий доступ. Контент должен отдаваться при запросе, поступившему на стандартный порт веб-сервера. Также нужна отказоустойчивость на случай прерывания процесса NodeJS.