Estoy tratando de implementar mi pequeña aplicación web Catalyst usando Plack/Starman. Toda la documentación parece sugerir que quiero usar esto en combinación con nginx. ¿Cuáles son los beneficios de esto? ¿Por qué no utilizar Starman directamente en el puerto 80?¿Por qué utilizar nginx con Catalyst/Plack/Starman?
Respuesta
No tiene por qué ser nginx en particular, pero quiere algún tipo de proxy servidor anticipado a su servidor de aplicaciones por varias razones:
Así que puede ejecutar el servidor en un catalizador puerto alto, como usuario normal, mientras ejecuta el servidor frontend en el puerto 80.
Para servir archivos estáticos (recursos comunes como imágenes, JS y CSS, así como cualquier tipo de descarga que desee usar X -Sendfile o X-Accel-Redirect con) sin bloquear un proceso de perl durante la descarga.
Hace las cosas más fáciles si desea pasar a una configuración más complicada que implica, p. Edge Side Includes, o hacer que el servidor web sirva directamente desde memcached o mogilefs (ambas cosas que nginx puede hacer), o una configuración de equilibrio de carga/HA.
hice esta pregunta en #plack y tiene la siguiente respuesta del @nothingmuch (I agregado formato):
Con nginx puede configurar loadbalancing tipo/conmutación por error material. Si el sitio es pequeño/simple podría ser overkill.
No conozco ninguna desventaja de que Starman podría tener. Quizás si tiene muchas visitas en archivos estáticos nginx usaría menos cpu/memory para manejarlas, pero es poco probable que sea significativo en una aplicación web típica . Grandes descargas pueden atar a los trabajadores de Starman para el archivo estático descargas sin embargo. (Tal vez no, con sendfile.) Eso es todo lo que puedo pensar.
... Una configuración de conmutación por error puede bueno si usted quiere hacer actualizaciones sin tiempo de inactividad. ("Fail" la vieja versión .)
Otra razón es que un servidor anticipado ligero (incluso Apache está bien) consume mucha menos memoria por conexión de un proceso típico Starman (un par de decenas o MB vs. más de 100 MB). Dado que la conexión está abierta durante un tiempo, especialmente si desea utilizar conexiones keep-alive, puede admitir una gran cantidad de conexiones simultáneas con mucha menos memoria RAM. Solo asegúrese de que el tamaño del búfer del servidor de la interfaz de proxys sea lo suficientemente grande como para cargar una respuesta HTTP típica inmediatamente desde el back-end. Entonces el backend es libre de procesar la próxima solicitud.
- 1. Por qué instalar el servidor (Nginx, Apache ...) con Node.js?
- 2. Por qué utilizar asp: HyperLink
- 3. ¿Por qué utilizar la serialización
- 4. ¿Por qué no utilizar Html.EditorForModel()
- 5. ¿Por qué utilizar Autorelease pool?
- 6. MVC3 por qué utilizar html.editorfor
- 7. por qué utilizar Conde con IQueryable se considera inviable
- 8. ¿Por qué utilizar un motor de plantillas con un marco?
- 9. ¿Por qué utilizar async y esperar con Task <>?
- 10. ¿Por qué utilizar INotifyPropertyChanged con enlaces en WPF?
- 11. Configurar Nginx con PROXY_PASS
- 12. ¿Por qué no utilizar archivos XIB?
- 13. ¿Por qué utilizar JsHelper de CakePHP?
- 14. ¿Por qué utilizar SQL Server bucle anidado
- 15. Por qué no utilizar Spring's OpenEntityManagerInViewFilter
- 16. ¿Por qué no desea utilizar Cloud Computing
- 17. ¿Por qué utilizar encabezados precompilados (C/C++)?
- 18. ¿Por qué NGINX está ignorando mis cadenas de consulta?
- 19. ¿Por qué usar Apache sobre NGINX/Cherokee/Lighttpd?
- 20. ¿Por qué utilizar InnoDB sobre MySIAM
- 21. ¿Por qué utilizar BufferedReader en este caso?
- 22. Por qué utilizar HandlerThread en Android
- 23. ¿Por qué utilizar el patrón de visitante?
- 24. ¿Por qué Rails con Passenger/nginx solo funciona en modo de desarrollo? No hay registros disponibles
- 25. Desinstalar nginx instalado por Passenger
- 26. ¿Cuál es la ventaja de utilizar NginX para Node.js?
- 27. Nginx ubicación coincide con
- 28. WSGI vs uWSGi con Nginx
- 29. Por qué utilizar Intellij, o qué hacer durante la evaluación
- 30. ¿Cómo usar nginx con PHP?
Tengo una pregunta de seguimiento, Hobbs: si estás usando un framework como Dancer o Catalyst, ¿para qué necesitas starman? ¿No podría simplemente enviar la solicitud al servidor predeterminado provisto por Plack/Dancer? –
@Vijay El servidor predeterminado utilizado por Dancer, y por Catalyst si ejecuta el script del servidor sin las opciones '-f' o' -k', solo puede manejar una sola solicitud a la vez, por lo que no es tan bueno para la producción. Por otro lado, si ejecuta el script del servidor de Catalyst con '-f', lo que usa es Starman :) – hobbs
¡Ah, excelente! Eso finalmente aclara lo último que estaba tratando de entender.Escribí mi explicación para la pila nginx/starman/dancer aquí (si tienes algún comentario/idea adicional que me perdí, realmente los agradecería): http://stackoverflow.com/questions/12127566/an-explanation -de-la-nginx-starman-bailarina-web-pila –