Ускоряем работу сайта, используя быстрый и надёжный веб‑сервер nginx

nginx — это простой, быстрый и надёжный сервер. Применение nginx очень эффективно для отдачи статического контента и в качестве прокси‑сервера перед динамическими сайтами.

NGINX — это сокращение от «engine x», которое правильно произносится как энжин‑икс, хотя в быту этот веб‑сервер наиболее часто называют «нгинкс». Это очень быстрый веб‑сервер, который замечательно справляется с отдачей статического контента (изображений, стилей, скриптов и прочих скачиваемых файлов), отлично подходит для проксирования запросов динамического контента, позволяя кешировать полученные от бэкенда ответы.

В режиме проксирование nginx даёт существенный прирост производительности, особенно в тех случаях, когда бэкендом является медленный веб‑сервер, требующий много ресурсов (apache, например).

NGINX способен работать и без бэкенд‑сервера — в PHP‑проектах связка nginx + FastCGI (php-fpm) часто более производительна, нежели более классическая nginx + apache.

В ruby -проектах nginx тоже весьма популярен — как правило, именно он выступает в качестве фронтенда для рельсовых веб‑серверов Puma, Thin, Unicorn, Rainbows, Passenger.

Основные функции веб‑сервера:

  • обработка запросов статических и индексных файлов
  • проксирование запросов с кешированием и без
  • простое распределение нагрузки и отказоустойчивость
  • поддержка FastCGI, серверов Memcached и хранилищ Redis
  • сжатие (gzip)
  • byte-ranges (докачка)
  • chunked ответы
  • HTTP‑аутентификация
  • SSI‑фильтры
  • поддержка SSL

Тематические статьи

Веб-сервер Apache

Apache — это HTTP‑сервер. Основными достоинствами считаются надёжность и гибкость конфигурации.

Статья опубликована в 2014 году
Серверное программное обеспечение

На серверах для размещения сайтов и веб‑приложений устанавливается программное обеспечение, которое требуется для работы программной логики сайта и других служб домена, для обслуживания и мониторинга, а также для защиты от взлома и устойчивости к нагрузкам.

Статья обновлена в 2022 году
Быстрый поиск на сайте, используя ElasticSearch или Sphinx

Sphinx и ElasticSearch — это поисковые «движки», которые обеспечивают более быстрый поиск и фильтрацию по сравнению с реляционными базами данных, а также обеспечивают возможность использования многих полезных функций поиска, например, учитывают морфологию языка, осуществляют фасеточный поиск, работают со стоп‑словами, обеспечивают выборочную индексацию и позволяют производить настройку формулы определения релевантности документов.

Статья опубликована в 2014 году
Масштабирование баз данных — партиционирование, репликация и шардирование

СУБД — это очень часто «узкое место» в производительности веб‑приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. В современных высоконагруженных системах эффективное управление данными невозможно без использования методов масштабирования и обеспечения отказоустойчивости. Репликация, партиционирование и шардирование — ключевые подходы, которые позволяют распределять данные, повышать производительность и гарантировать доступность. Разберем каждый из них подробно.

Статья обновлена в 2025 году
Ускоряем работу сайта: используем Redis для кеширования и хранения данных

Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.

Статья опубликована в 2014 году
Браузерное или клиентское кеширование

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

Статья опубликована в 2014 году
Ajax-навигация Turboliks & Wiselinks

Увеличить отзывчивость интерфейса и снизить нагрузку на сервер можно при помощи Ajax‑навигации: если не перезагружать страницу целиком, а обновлять только содержание или отдельные фрагменты, то скорость работы сайта или приложения существенно возрастёт.

Статья опубликована в 2014 году
Ленивая загрузка или загрузка по требованию на клиентской части

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

Статья опубликована в 2014 году