Un choix très populaire pour l'exécution des applications web Perl de nos jours semble être derrière un serveur web nginx demandant des requêtes à un démon FastCGI ou à un serveur web compatible PSGI (par exemple Starman) .nginx et Perl: FastCGI vs proxy inverse (PSGI/Starman)
Il y a eu beaucoup de questions pour lesquelles on pourrait le faire en général (par exemple Why use nginx with Catalyst/Plack/Starman?) et les réponses semblent appliquer dans les deux cas (par exemple, permettre nginx au service de contenu statique, redémarrage facile du serveur d'applications, l'équilibrage de charge , etc.)
Cependant, je suis particulièrement intéressé par les avantages/inconvénients de l'utilisation de FastCGI par rapport à une approche par proxy inverse. Il semble que Starman soit largement considéré comme le serveur/application Web Perl PSGI le plus rapide et le meilleur, et j'ai du mal à voir des avantages à utiliser FastCGI. Les deux approches semblent soutenir:
- sockets de domaine UNIX aswell comme les sockets TCP
- serveurs de style gestionnaire de fourche/processus Aswell en tant que serveurs basés sur des événements non-bloquant (par exemple AnyEvent).
- Traitement des signaux/redémarrage en douceur
- PSGI
De même, la configuration nginx pour l'une des options est très similaire.
Alors pourquoi choisir l'un plutôt que l'autre?
adresse IP du client d'origine est passé en-tête X-Forwarded-For et en-tête d'hôte d'origine est passé dans X-Forwarded- En-tête de l'hôte, les deux premiers inconvénients ne sont donc pas importants. – marpetr
+1 merci pour la comparaison. Comme on peut exécuter un processus maître pour gérer les processus et les threads principaux, le point 3 est sans problème. Vous avez soulevé un point intéressant concernant Zope et la façon de connaître l'adresse IP et le nom d'hôte du client original pour construire des URL valides – Viet