Est à la mode
, Et cet examen ne veut pas dire que ce n'est pas une bonne idée.
L'explication est simple. Nous utilisons généralement Apache pour servir tout type de contenu via une requête HTTP, mais généralement réalisons de nombreux modules Apache nécessaires pour nos applications fonctionnent correctement, à commencer par le très PHP, mais nous n'avons pas besoin de servir du contenu statique (images, fichiers CSS ou le javascript, fichiers compressés ...). Si nous pouvions séparer en une simple demande statiques pourraient réorienter celles dynamique aux différents services et nous aurions beaucoup moins de ressources que consumiesen statique depuis un serveur pourrait faire avec beaucoup plus léger que Apache. Nous pouvons!
Ce serait le cadre traditionnel d'un serveur Web:
Requêtes HTTP atteindre le serveur Web de l'Internet et il lit les fichiers de disques nécessaires pour la servir. Rien de nouveau.
C'est le scénario que nous voulons faire migrer:
Toutes les requêtes HTTP sont reçus sur le port 80 par un serveur beaucoup plus léger que Apache ( nginx , lighttpd ) qui est responsable de la diffusion de contenu statique directement à partir du disque et de rediriger les requêtes dynamiques pour Apache écoute maintenant toujours dans la 8080, à savoir les actes de lumière comme un serveur proxy pour les demandes de contenu dynamique.
Pour le cas présent, le serveur a migré hôtes virtuels définis plusieurs sites différents et ont cherché à faire de ceux peu de trafic comme ils sont maintenant, c'est Apache servir tout, et changer seulement ceux où le trafic Nginx est élevé pour servir le statique.
La première étape consiste donc à installer et à configurer Nginx pour agir comme plein proxy. Nous allons aussi modifier Apache pour arrêter l'écoute sur le port 80. Commençons par ce dernier.
Nous devrons changer le httpd.conf pour écouter sur le nouveau port, dans mon cas, 8080. Nous allons changer la ligne appropriée pour ressembler à ceci:
Écoutez 8080 Mais ce n'est pas tout. Nous devons également modifier les hôtes virtuels définis à l'écoute sur le nouveau port. A la fin du même fichier va changer la ligne correspondante pour cela (le vôtre sera similaire, peut-être à la place de l'astérisque a l'adresse IP de votre machine):
NameVirtualHost *: 8080 Dans mon CentOS5 la configuration des hôtes virtuels stockés dans / etc / httpd / httpd.d. De là, nous avons lancé cette commande mettra à jour tout en une seule fois:
. for i in `dir`, faire sed-est / * 80 / *: 8080 / g $ i echo $ i; fait Heureusement, il a fallu remplacer la main un par un
.
Maintenant installer nginx:
yum install nginx et de faire la première configuration qui va nous permettre, pour le moment, c'est plein de proxy Apache, c'est à dire qu'il redirige tout à Apache.
Créez le fichier / etc / nginx / proxy.conf
résoudre 127.0.0.1; proxy_redirect off; proxy_set_header Host $ host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; client_max_body_size 128m; client_body_buffer_size 256k; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffers 32 256k; proxy_busy_buffers_size 512k; proxy_temp_file_write_size 512k;
La première ligne sera l'IP du serveur DNS.
Maintenant, ajoutez la configuration nginx suivante dans le "serveur" par défaut.
/ Etc / nginx / nginx.conf
serveur { écouter 80; Localisation / { PROXY_PASS http:// $ host: 8080; include / etc / nginx / proxy.conf; }
La première étape devrait être achevée. Nous élevons les services Apache et nginx et essayé de naviguer serveurs hôtes virtuels. Si tout va bien il devrait fonctionner correctement, mais si vous regardez les en-têtes qui sont reçus en réponse, par exemple avec le plugin LiveHTTPHeaders de Firefox, voir comment ajouter ce qui suit à toutes les applications:
Serveur: nginx/0.8.53 Test 1 dépassée. Nous allons maintenant configurer certains hôtes virtuels pour le nginx servir du contenu statique.
/ Etc / nginx / conf.d / virtual.conf
serveur { écouter 80; www.tudominio.com nom_serveur; emplacement ~ * ^ + \ (jpg |.. js | gif | png | ico | gif | txt | js | css | swf | zip | rar | zip | exe | rar | mp3 | wav | mpeg | asf | wmv | flv ) $ { root / var / httpd / www.tudominio.com; expire 30d; } Localisation / { PROXY_PASS http://www.tudominio.com:8080; include / etc / nginx / proxy.conf; } }
Avec cela, nous disons que tous les fichiers statiques directement et nginx servent d'autres demandes sont redirigées vers Apache. Nous devons créer un "serveur" pour chaque hôte virtuel que nous voulons configurer cela. Fondamentalement, ce que nous faisons est mis en place le même chemin de disque pour les fichiers statiques que nous avons eues dans Apache, donc vous n'aurez pas besoin de changer quoi que ce soit. Dans de nombreux endroits proposent static.tudominio.com la création d'un hôte, mais cela changerait toutes vos applications Web physiquement, et ce n'est pas ce qui est prévu
.
Nous ne pouvons redémarrer nginx. Comment savons-nous si cela fonctionne? Simple, en examinant les logs d'Apache et nginx. Si nous voyons comment ce dernier sert des fichiers statiques et Apache tous les autres
.
Enfin, nous avons un petit problème. Depuis Apache toutes les demandes HTTP provenant de la machine elle-même, car, en fait, venir de nous-mêmes à travers le proxy. Cela peut être un problème pour les analyseurs de trafic, mais aussi si vous avez un système qui contrôle les IP des utilisateurs. Pour corriger cela, nous mod_rpaf pour Apache (reverse proxy ajouter module avant), nous remplaçons les en-têtes correctement de sorte que l'IP distante que nous voyons est celle de notre client. J'ai téléchargé, installé et configuré:
/ Etc / httpd / conf.d / rpaf.conf
Rpaf_module LoadModule modules/mod_rpaf-2.0.so Sur RPAFenable Sur RPAFsethostname RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For
Cette obtiendrez vous remplacez l'IP du client est reçu dans Apache qui vient avec l'en-tête "X-Forwarded-For" qui est l'endroit où nous quittons le nginx originale.
C'est tout. Si vous redémarrez le serveur Apache verra que dans les journaux commencent à être la machine locale réelle IP de l'utilisateur et non.
Comme toujours, un dernier détail. Intégrer nginx avec Cacti à surveiller
.
Les modèles sont ici , mais je ne fonctionnent pas bien, j'ai changé un peu ces autres .
Nous ajoutons à la configuration initiale de nginx les lignes suivantes:
Localisation / nginx_status { stub_status sur; access_log off; IP_DE_TU_SERVIDOR_CACTI permettre; refuser tout; }
Avec cela, vous pouvez accéder à l'état du serveur nginx de http://IP_DE_TU_SERVIDOR/nginx_status.
A l'intérieur du fichier zip il ya quatre deux scripts perl qui copient dans le répertoire des scripts de votre installation de cactus et deux xml que vous importez à partir de l'outil lui-même. Tout est prêt. Depuis paramètres de cactus où vous avez installé nginx serveur ajoutent les neuf sources de données et des graphiques. Quand url configuré demandera l'accès que nous avons vu il ya un moment.
Et nous sommes ici. En très peu de temps, nous avons réussi à changer toute la structure de notre site web sans perte de disponibilité et, le meilleur de tous, nous avons créé un beaucoup plus efficace et robuste. Dans des conditions de circulation moyenne ne verrez pas beaucoup de différence dans les performances, mais vous aurez une bien mieux préparés à faire face à des pics et des effets "Slashdot"
.












Personne n'a commenté sur "infrastructure Web Modification d'un serveur avec Nginx pour servir du contenu statique et Apache comme proxy"
Nourrir les commentaires à cette entrée TrackbackLaisser un commentaire