Maison  >  Questions et réponses  >  le corps du texte

ruby-on-rails - Comment Apache interagit avec les serveurs d'applications

L'une des solutions de déploiement Rails consiste à utiliser Apache comme proxy inverse pour transmettre les requêtes au serveur d'applications (tel que Phusion Passenger). En tant que serveur proxy inverse, comment Apache interagit-il avec le serveur d'applications derrière lui ?
Par exemple, mon Apache écoute le port 1080 et vérifie les informations du processus :

> ps aux | grep /MyWebsite/bin/httpd
googly    8353  0.0  0.0  73856  3280 ?        Ss   Aug26   0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
googly    8391  0.0  0.0  73856  1828 ?        S    Aug26   0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
... # 起了10个进程,并且我知道8353是父进程,其余的是子进程

Lorsqu'une requête arrive, elle ira d'abord à Apache. Apache allouera un processus parmi ces processus pour gérer la requête (par exemple, le processus 8391 est alloué), alors que fera le processus 8391 ? Va-t-il transmettre cette demande au serveur d'application suivant (Phusion Passenger) ? Si oui, le serveur d’applications dispose-t-il également de son propre processus indépendant ? Ou le processus 8391 peut-il être considéré comme un processus de serveur d'applications et peut-il gérer cette requête par lui-même ?
Comment Apache interagit-il avec le serveur d'applications qui se trouve derrière lui ?

为情所困为情所困2713 Il y a quelques jours754

répondre à tous(3)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 17:05:37

    Je vois cette question depuis longtemps et je n’y ai pas répondu à l’époque. Laissez-moi y répondre maintenant.

    Rails est livré avec son propre serveur Web, qui est chargé d'écouter des ports spécifiques pour fournir des services.

    Le langage Ruby possède des API liées à http et vous pouvez même écrire vous-même un simple serveur de fichiers statiques. Et il existe de nombreux joyaux puissants qui fournissent des services similaires.

    Apache est un serveur http professionnel, en principe, il ne peut répondre qu'aux fichiers statiques les plus basiques.

    La manière la plus courante pour le langage PHP de s'exécuter sous Apache est son plug-in. En d'autres termes, Apache est modifié pour répondre aux requêtes de fichiers php.

    L'utilisation d'Apache avec Phusion Passenger pour déployer des applications Rails concerne principalement des invites d'erreur plus élégantes et une gestion automatisée des erreurs (principalement le redémarrage), ainsi qu'un système de journalisation plus complet et des fonctions avancées telles que l'équilibrage de charge.

    Il est également possible d'utiliser des serveurs Web tels que rails s ou Thin pour démarrer des services, mais ce n'est pas si simple à utiliser pour les navigateurs et les développeurs.

    Si vous n'avez pas besoin d'une gestion automatique des erreurs, l'utilisation des rails de proxy inverse nginx ou du port léger est le meilleur choix.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 17:05:37

    Si vous configurez un proxy inverse, Apache agira alors comme un client HTTP pour envoyer la même requête au serveur d'application, puis enverra le résultat au client réel.

    répondre
    0
  • 怪我咯

    怪我咯2017-05-16 17:05:37

    Après avoir démarré Apache, il y aura plus de dix ou vingt processus (cela dépend de votre configuration)
    Ensuite, après qu'Apache ait reçu la demande, un processus la traitera. Si elle remplit les conditions du proxy inverse, la demande sera envoyée à votre serveur d'applications
    . En fait, le serveur d'applications devrait être accessible directement (sauf s'il y a un pare-feu ou autre)
    Quoi qu'il en soit, le serveur d'applications reçoit la requête puis renvoie une réponse à Apache
    Apache renvoie ensuite la réponse au navigateur
    Cependant, lors de ce processus, vous devrez peut-être également configurer la réécriture de l'url en html dans la réponse

    répondre
    0
  • Annulerrépondre