Я пишу несколько веб-сервисов, возвращающих данные JSON, у которых много пользователей.
Каковы преимущества использования Nginx перед моим сервером по сравнению с использованием HTTP-сервера go?
Я пишу несколько веб-сервисов, возвращающих данные JSON, у которых много пользователей.
Каковы преимущества использования Nginx перед моим сервером по сравнению с использованием HTTP-сервера go?
Ответы:
Это зависит.
Изначально установка nginx в качестве обратного прокси-сервера даст вам:
Сервер HTTP Go очень хорошо, но вам будет нужно изобретать колесо , чтобы сделать некоторые из этих вещей (это хорошо: это не значит быть всем для всех).
Мне всегда было проще поставить nginx впереди - в этом он хорош - и позволить ему делать вещи «веб-сервера». Приложение My Go выполняет все функции приложения и только минимум заголовков и т. Д. что ему нужно. Не считайте размещение nginx на переднем плане "плохим".
log
пакет). Если вы хотите регистрировать IP-адрес, доступ к ресурсам и т. Д., Вам нужно это написать. То же самое касается установки заголовков, помимо основ. Хотя у меня нет конкретных данных, nginx перед Go действительно должен быть не медленнее, чем Go: на самом деле он может быть быстрее благодаря gzip и его собственным оптимизациям. «Стоимость» будет заключаться в увеличении использования памяти / ЦП, но nginx также очень эффективен в этом отношении.
Стандартный http-сервер Go в порядке. Если ваше приложение в основном / только «динамические» запросы / ответы, то это действительно лучший способ.
Вы можете использовать nginx для обслуживания статических ресурсов, но, скорее всего, стандартный Go тоже подходит для этого. Если вам нужна более высокая производительность, вы должны просто использовать CDN или кеш как можно больше с Varnish (например).
Если вам нужно обслуживать разные приложения с одного и того же IP-адреса, nginx - прекрасный выбор для прокси-сервера для распределения запросов между различными приложениями; хотя я чаще брал Varnish или HAProxy из набора инструментов для такого рода вещей.
Веб - инструментарий Gorilla дает вам:
schema
пакет преобразует значения формы в структуру.Это заполняет большой пробел между Go 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. «Файл nginx.conf для всех веб-сайтов Gopher Academy содержит более 115 строк. Эквивалентный файл Caddyfile - всего 50 строк».