Каковы преимущества использования Nginx перед веб-сервером для Go? [закрытый]


Я пишу некоторые веб-сервисы, возвращающие данные JSON, которые имеют много пользователей.

каковы преимущества использования Nginx перед моим сервером по сравнению с использованием только сервера go http?

4 70

4 ответа:

Это зависит.

из коробки, поставив nginx перед собой в качестве обратного прокси-сервера, вы получите:

  • логи доступа
  • журналы ошибок
  • простое завершение SSL
  • поддержка SPDY
  • поддержка gzip-сжатия
  • простые способы установить заголовки HTTP для определенных маршрутов в несколько строк
  • очень быстрое статическое обслуживание активов (если вы обслуживаете S3 / etc. хотя, это не то уместно)

сервер Go HTTP очень хорош, но вы будет нужно изобрести колесо, чтобы сделать некоторые из этих вещей (что хорошо: это не должно быть все для всех).

Мне всегда было проще поставить nginx впереди-что и хорошо-и пусть он делает" веб-сервер". Мое приложение Go делает материал приложения,и только голый минимум заголовков / и т. д. что ему и нужно. Не смотрите на то, чтобы поставить nginx впереди как a "плохая вещь.

стандартный http-сервер Go в порядке. Если ваше приложение в основном/только "динамические" запросы/ответы, то это действительно лучший способ.

вы можете использовать nginx для обслуживания статических активов, но, скорее всего, стандартный Go one подходит и для этого. Если вам нужна более высокая производительность, вы должны просто использовать CDN или кэш столько, сколько вы можете с лаком (например).

Если вам нужно обслуживать разные приложения с одного и того же IP-адреса, nginx является прекрасным выбором для a прокси для распределения запросов между различными приложениями; хотя я бы чаще получал лак или HAProxy из панели инструментов для такого рода вещей.

The Gorilla web toolkit дает вам:

  • Расширенная маршрутизация (ограничение домена/поддомена, соответствие пути регулярных выражений).
  • поддержка gzip (через обработчики промежуточного программного обеспечения.)
  • обработчик журналирования промежуточного слоя, который выводит в общий формат журналов Apache.
  • защищенные файлы cookie.
  • сеансы.
  • schema пакет преобразует значения формы в структуру.

это сильно заносит разрыв между го net/http и HTTP-серверы, такие как NGINX.

лично я бы избегал установки и настройки другого HTTP-сервера поверх net/http если я знаю, что могу подключить CDN вместо этого.

Я думаю net/http имеет самый мощный HTTP-сервер в любой стандартной библиотеке.

от https://blog.gopheracademy.com/caddy-a-look-inside/ Похоже, что Go может обрабатывать gzip, ошибки, статические файлы, маршрутизацию и заголовки http с помощью промежуточного программного обеспечения. Строка ниже, из блога, показывает, как вы будете обрабатывать такой запрос.

logHandler(gzipHandler(fileServer))

они обрабатывают регистрацию ошибок очень интересным способом. Пока ваше промежуточное программное обеспечение возвращает код ошибки (int), промежуточное программное обеспечение обработки ошибок автоматически обрабатывает его. Они даже пошли так далеко, как настройка всей сайт в Go как Nginx бы. - Это нгинкс.файл conf для всех веб-сайтов Gopher Academy был длиной более 115 строк. Эквивалентный Caddyfile составляет всего 50 строк."