Я пишу некоторые веб-сервисы, возвращающие данные JSON, у которых много пользователей.
Вы бы рекомендовали использовать NGINX в качестве веб-сервера или достаточно, чтобы использовать стандартный HTTP-сервер Go?
Я пишу некоторые веб-сервисы, возвращающие данные JSON, у которых много пользователей.
Вы бы рекомендовали использовать NGINX в качестве веб-сервера или достаточно, чтобы использовать стандартный HTTP-сервер Go?
Это зависит.
Из коробки, ставя nginx перед обратным прокси-сервером, вы получите:
HTTP-сервер Go очень хорош, но вам нужно будет изобрести колесо, чтобы выполнить некоторые из этих действий (это прекрасно: он не должен быть всем для всех).
Мне всегда было проще поставить nginx впереди, что и хорошо, и позволить ему делать "веб-сервер". Приложение My Go использует приложение, и только минимальное количество заголовков/и т.д. что ему нужно. Не смотрите на то, чтобы положить nginx впереди как "плохую" вещь.
Стандартный HTTP-сервер Go отлично. Если ваше приложение в основном/только является "динамическим" запросом/ответом, то это действительно лучший способ.
Вы можете использовать nginx для обслуживания статических активов, но, скорее всего, стандартный Go one тоже подходит для этого. Если вам нужна более высокая производительность, вы должны просто использовать CDN или кеш столько, сколько сможете с помощью лака (например).
Если вам нужно обслуживать разные приложения с одного и того же IP-адреса, nginx - прекрасный выбор для прокси-сервера для распространения запросов между различными приложениями; хотя я чаще получаю лак или 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 с использованием Middleware. Строка ниже, из блога, показывает, как вы будете обрабатывать такой запрос.
logHandler(gzipHandler(fileServer))
Они обрабатывают ведение журнала ошибок действительно интересным способом. Пока ваше промежуточное ПО возвращает код ошибки (int), промежуточное ПО обработки ошибок автоматически обрабатывает его. Они даже дошли до настройки всего сайта в Go, как Nginx. "Файл nginx.conf для всех веб-сайтов Академии Gopher был длиной более 115 строк. Эквивалентный файл Caddyfile - всего 50 строк."