Dans de nombreux scénarios de nos jours, je demande un hôte VPS pour héberger et exécuter un projet Web. Je ne fais pas exception. J'ai acheté une petite victoire 03 VPS à utiliser. Pendant le processus d'utilisation, nous sommes confrontés à un problème, c'est-à-dire que le même type d'environnement serveur est bien - mais si trois types de projets de serveur coexistent avec un PHP, un ASP et un JSP, comment allouons-nous le seul port 80? Parce que les sites Web commerciaux www ne peuvent souvent occuper que le port 80. Bien sûr, si vous ne prenez que des services, tels que les interfaces, l'utilisation d'autres ports ne sera pas en conflit avec le port 80. De nombreux développeurs sont confrontés au problème du port 80, et la situation réelle sera limitée par le coût. Parce que l'achat d'un VPS pour un projet seul n'est pas économique, pas rentable, et il n'est pas pratique de gérer. Par conséquent, nous devons soigneusement examiner comment le distribuer à plusieurs serveurs tout en fournissant un port 80, permettant à différents hôtes d'exécuter leurs projets Web respectifs.
Cher, pouvons-nous dire que cette exigence est réalisée? Oui, ce n'est pas une "technologie magique" ou une technologie complexe. Je me demande si vous comprenez le "proxy inversé" dans les services réseau, l'une des fonctions est de compléter la distribution des ports. Nous pourrions aussi bien utiliser le nom de domaine comme voie de distribution: Tout nom de domaine demandé par le nom de domaine AA.com sera distribué au port 82 PHP pour l'exécution; Tout nom de domaine demandé par le nom de domaine BB.com sera distribué au port ASP 83 pour exécution; ... et ainsi de suite. Bien sûr, le port ici est juste pour les instructions. Vous pouvez le configurer à volonté. Quoi qu'il en soit, la demande reçue du port 80 sera d'abord traitée puis distribuée. Le proxy inversé, en termes profanes, transforme simplement la main gauche en main droite.
Chaque fois que le proxy inversé est mentionné, les gens pensent généralement à Nginx, mais aujourd'hui, nous ignorons le célèbre Nginx pour le moment et utilisons Nodejs, un frère côté serveur qui utilise également des boucles à thread unique et d'événements. Tout d'abord, Node utilise JS pour la programmation serveur, plutôt que Nginx pour écrire la configuration ou Lua, ce qui est plus conforme à mon goût. Deuxièmement, je connais plus le nœud, et il est plus facile à configurer dans tous les aspects.
Le package Node-Http-Proxy qui complète cette fonction. Pour télécharger et installer, veuillez taper:
NPM Installer HTTP-Proxy
Une fois l'installation terminée, créez un nouveau fichier proxy.js et entrez:
var http = required ('http'), httpproxy = require ('http-proxy'); // créer un nouvel objet proxy de proxy proxy proxy = httpproxy.createproxyserver ({}); // capte exception proxy.on ('error', fonction (err, req, réside) {res.write 'Content-Type': 'Text / PLAIN'}); // Dans chaque demande, appelez la méthode proxy.web (req, res config) pour demander la distribution créez votre serveur personnalisé et appelez simplement `proxy.web ()` à proxy // une demande Web à la cible adoptée dans les options // vous pouvez également utiliser `proxy.ws ()` pour proxy une demande Websockets // var Server = requi // Vous pouvez définir ici votre logique personnalisée pour gérer la demande // puis proxyer la demande. req.connection.remoteaddress));Si vous parlez du coût de l'utilisation d'un serveur proxy, il se peut que cela consommera plus d'opérations CPU que sans consommer plus de ressources.
Problème d'utilisation: Impossible de spécifier le dossier proxy.web (req, res, {Target: 'http://vevb.com:81/foo/'});