Est à la mode icon smile Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache , 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:

http Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache 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: nginx Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache

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 icon razz Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache .

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 icon razz Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache .

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 icon smile Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache .

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 icon smile Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache .

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.

nginx0 Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache nginx1 Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache

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" icon smile Modificando la infraestructura web de un servidor con Nginx para servir contenido estático y como proxy de Apache .