Estoy escribiendo algunos servicios web que devuelven datos JSON, que tienen muchos usuarios.
¿Cuáles son los beneficios de usar Nginx frente a mi servidor en comparación con solo usar el servidor http go?
Estoy escribiendo algunos servicios web que devuelven datos JSON, que tienen muchos usuarios.
¿Cuáles son los beneficios de usar Nginx frente a mi servidor en comparación con solo usar el servidor http go?
Respuestas:
Depende.
Fuera de la caja, poner nginx al frente como un proxy inverso te dará:
El servidor HTTP Go es muy bueno, pero será necesario reinventar la rueda para hacer algunas de estas cosas (que está bien: no está destinado a ser todo para todos).
Siempre me ha resultado más fácil poner nginx al frente, que es en lo que es bueno, y dejar que haga las cosas del "servidor web". La aplicación My Go hace las cosas de la aplicación, y solo el mínimo de encabezados / etc. que necesita. No considere poner nginx al frente como algo "malo".
log
paquete). Si desea registrar la dirección IP, el acceso a recursos, etc., deberá escribir eso. Lo mismo ocurre con la configuración de encabezados, más allá de lo básico. Aunque no tengo ningún dato concreto, nginx frente a Go no debería ser más lento que Go: de hecho, puede ser más rápido gracias a gzip y sus propias optimizaciones. El "costo" será una mayor utilización de memoria / CPU, pero nginx también es muy eficiente en ese frente.
El servidor http estándar de Go está bien. Si su aplicación en su mayoría / solo son solicitudes / respuestas "dinámicas", entonces es realmente la mejor manera.
Puede usar nginx para servir activos estáticos, pero lo más probable es que el Go estándar también esté bien para eso. Si necesita un mayor rendimiento, solo debe usar un CDN o caché tanto como pueda con Varnish (por ejemplo).
Si necesita servir diferentes aplicaciones desde la misma dirección IP, nginx es una buena opción para que un proxy distribuya solicitudes entre las diferentes aplicaciones; aunque más a menudo saco Varnish o HAProxy de la caja de herramientas para ese tipo de cosas.
El kit de herramientas web de Gorilla le ofrece:
schema
El paquete convierte los valores del formulario en una estructura.Esto llena una gran brecha entre los net/http
servidores Go y HTTP como NGINX.
Personalmente, evitaría instalar y configurar otro servidor HTTP net/http
si sé que puedo conectar un CDN en su lugar.
Creo que net/http
tiene el servidor HTTP más potente de cualquier biblioteca estándar.
Desde https://blog.gopheracademy.com/caddy-a-look-inside/ parece que Go puede manejar gzip, errores, archivos estáticos, enrutamiento y encabezados http usando Middleware. La línea a continuación, del blog, muestra cómo manejaría tal solicitud.
logHandler(gzipHandler(fileServer))
Manejan el registro de errores de una manera realmente interesante. Siempre que su middleware devuelva un código de error (int), el middleware de manejo de errores lo maneja automáticamente. Incluso han ido tan lejos como configurar todo el sitio en Go como lo haría Nginx. "El archivo nginx.conf para todos los sitios web de la Academia Gopher tenía más de 115 líneas. El Caddyfile equivalente tiene solo 50 líneas".