Bonjour à tous,

 

Suite à l’article sur la configuration d’un reverse proxy Nginx, j’avais dit que je ferais un article expliquant comme le configurer avec Isp Config 3, car la procédure demande quelques petits ajustements.

 

Tout d’abord, sachez, que contrairement au précédent article, Nginx va maintenant être installé sur le même serveur qu’Apache, mais il est bien sûr possible de séparer les deux comme je l’avais fait sur le précédent article.

 

Exemple concret

 

ispconfig3+apache+nginx-01

Le visiteur ne verra que le serveur Nginx, qui stockera en cache, tous les éléments statiques de votre site et certaines requêtes php.

 

Pré-requis :

Pour nos pré-requis, on va partir du principe que votre ou vos serveurs Apache/Mysql sont configurés et pleinement fonctionnels.

 

Informations utiles :

Même si la configuration du proxy NGINX est spécifique à un site WordPress pour la mise en cache, la configuration a été testé sur les CMS suivants et elle est parfaitement fonctionnelle :

  • WordPress
  • Mybb
  • Owncloud
  • BilboPlanet

 

Installation et configuration :

Tout d’abord, la configuration va être faite sur le principe du Catch All VHost ce qui veut dire que ça englobe tous les sites en une seule configuration.

 

Cette procédure n’est pas compatible avec un serveur multi-ip !

 

Accrochez vous, il m’a fallu 3 heures, un mal de crâne et une bière pour vous pondre ça :

 

La première chose à faire, c’est de stopper le service apache avec un petit coup de

service apache2 stop

 

On va modifier les ports dans la configuration d’apache :

nano /etc/apache2/ports.conf
#NameVirtualHost *:82
Listen 82

 

Ensuite, on va modifier tous les virtualhost qui écoutent sur le port 80 :

sed -ie 's/*:80/*:82/g' /etc/apache2/sites-available/*.vhost

 

On relance apache

service apache2 start

 

Et nous testons que la configuration soit Ok, normalement, le port 80 ne devrait pas apparaître

 netstat -tunap | grep apache2
tcp6 0 0 :::8080 :::* LISTEN 3259/apache2
tcp6 0 0 :::8081 :::* LISTEN 3259/apache2
tcp6 0 0 :::82 :::* LISTEN 3259/apache2
tcp6 0 0 :::443 :::* LISTEN 3259/apache2

 

Maintenant, on va modifier les templates par défaut d’Isp Config pour Apache. On va d’abord les copiées dans le dossier de custom conf :

cd /usr/local/ispconfig/server/
cp conf/apache_ispconfig.conf.master conf-custom/
cp conf/vhost.conf.master conf-custom/

 

Ensuite, modifiez ce fichier pour remplacer le port 80 par le port 82 :

nano /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master
----> ( variable "NameVirtualHost *:" à la ligne 123 )

 

Maintenant on va avoir un problème, car pour les outils de statistiques, entre autre … TOUTES les requêtes viendront d’adresse 127.0.0.1. Pas pratique n’est ce pas ?

Pour résoudre le problème, on va installer le mod rpaf :

apt-get install libapache2-mod-rpaf

 

Ensuite, éditez la configuration d’apache

nano /etc/apache2/apache2.conf

 

et rajoutez ça à la fin :

RPAFsethostname On
RPAFproxy_ips 127.0.0.1 IP_DE_VOTRE_SERVEUR

 

On relance Apache maintenant :

service apache2 restart

 

Maintenant, on passe à la partie ou qui m’a donné mal à la tête, la configuration de Nginx.

 

Mettre à jour Debian

 

On va commencer par mettre la liste des sources de Debian à jour, pour ce faire, tapez la commande suivante

nano /etc/apt/sources.list

 

Et ajoutez ces sources après vos repository

deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx

 

 

Lancez maintenant la commande

apt-get update && apt-get upgrade

 

pour mettre à jour votre installation

Après, on installe NGINX avec la commande suivante et on le stop tout de suite :

apt-get install nginx
service nginx stop

 

Ensuite, on se rend dans le répertoire de NGINX :

cd /etc/nginx/

 

Et on édite la configuration de NGINX :

nano nginx.conf

 

La seule chose à modifier, c’est le worker_processes, à faire correspondre avec le nombre de cœurs de votre processeur. Sauvegardez.

Ensuite on se rend dans le dossier conf.d :

cd conf.d

 

Et on gicle de suite la configuration par défaut :

rm default.conf

 

Ensuite, re-créez le fichier default.conf :

nano default.conf

 

Et remplissez le avec ceci ( c’est en écrivant cette configuration que j’ai eu mal au crâne, profitez en ! 🙂 )

server {
 listen 80 default;
 server_name _;
 server_name_in_redirect off;
 resolver 127.0.0.1;
 access_log /var/log/ispconfig/httpd/$host/nginx-access.log;


location ~* ^/var/www/$host/web/(wp-content|wp-includes)/(.*)\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|css|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3|mp4)$ {
 root /var/www/$host/web/(wp-content|wp-includes);
 access_log off;
 expires 30d;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;

 }
location / {
 root /var/www/$host/web;
 index index.html index.htm index.php;
 access_log off;
 proxy_pass http://127.0.0.1:82;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

 

Pour faire propre, redémarrez votre serveur :

reboot

 

Et voilà, si vous avez tout suivi, nginx sera activé sur tous les sites que vous avez créés avec Isp Config et sur ceux qui seront créés à l’avenir !

Au final, plus personne ne sait que vous tournez sur Apache derrière :

ispconfig3+apache+nginx-final

 

 

Voilà, la configuration pour l’IPV6 arrive bientôt !