Я пишу деякі веб-служби, що повертають дані JSON, у яких багато користувачів.
Які переваги використання Nginx на моєму сервері порівняно із використанням простого сервера http?
Я пишу деякі веб-служби, що повертають дані JSON, у яких багато користувачів.
Які переваги використання Nginx на моєму сервері порівняно із використанням простого сервера http?
Відповіді:
Це залежить.
Нестандартно, поставивши nginx спереду як зворотний проксі-сервер, ви отримаєте:
Сервер Go HTTP дуже хороший, але ви це зробите потрібно винаходити колесо , щоб зробити деякі з цих речей (це добре: це не означає бути всім для всіх).
Мені завжди було простіше поставити nginx попереду - у чому він хороший - і дозволити йому робити те, що стосується веб-сервера. Додаток My Go виконує програми, і лише мінімальний заголовок / тощо. що це потрібно. Не дивіться на те, щоб поставити nginx попереду як на "погану" річ.
log
пакет). Якщо ви хочете зареєструвати IP-адресу, доступ до ресурсів тощо, вам потрібно це написати. Те саме стосується і встановлення заголовків, що виходять за рамки основ. Хоча у мене немає конкретних даних, nginx перед Go дійсно повинен бути не повільнішим за Go: насправді він може бути швидшим завдяки gzip та власним оптимізаціям. "Вартість" буде більшим використанням пам'яті / центрального процесора, але nginx також дуже ефективний на цьому фронті.
Зі стандартним http-сервером Go є нормально. Якщо ваша програма в основному / лише є "динамічними" запитами / відповідями, то це дійсно найкращий спосіб.
Ви можете використовувати nginx для обслуговування статичних активів, але, швидше за все, стандартний Go one теж підходить для цього. Якщо вам потрібна більш висока продуктивність, вам слід просто використовувати 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 містив понад 115 рядків. Еквівалентний файл Caddy містить лише 50 рядків."