Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
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
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.
- Un serveur Ubuntu 12.04 LTS/13.x ou Debian 6/7
- Une installation fonctionnelle d’Isp Config 3
- Être root
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 :
Voilà, la configuration pour l’IPV6 arrive bientôt !
Pour ceux qui ont constaté qu’il y a un petit soucis avec le fichier de config NGINX (elle renvoie tous les requêtes sur un seul site), vous pouvez regarder sur mon site la version « mise à jour » du fichier default.conf qui fonctionne bien sur ISPConfig 3.1 : http://manoaratefy.hostibox.com/2016/11/reverse-proxy-nginx-ispconfig-3-1/
J’ai resolu une partie du probleme avec ceci :
#### get url without www to have correct path ####
set $rawdomain $host;
if ($host ~* ^(www\.)(.+)) {
set $rawdomain $2;
}
Salut, merci pour ce tuto. J’ai remarqué que dans les dernières version d’isp le port 80 n’est plus inscrit directement dans conf/vhost.conf.master, il mis en variable depuis ./plugins-available/apache2_plugin.inc.php. De plus j’ai le meme probleme que Mathias, tous mes sites se trouve sur la meme IP et du coup j’ai tous les sites qui redirige vers le meme site. Aurais tu une solution (je ne voudrais pas passer à une version full nginx sans apache ? Dernier petit problème, mes site sont configurés sans les www sous isp mais j’active une redirection vers www afin d’avoir plus de souplesse dans la… Voir plus »
Bonjour,
Tout d’abord, petit détail, il me que vos articles s’inspirent largement du travail de Nedim Hadzimahmutovic que l’on trouve ici (https://www.howtoforge.com/nginx-catch-all-host-as-front-end-to-apache-for-ispconfig-3-on-debian-lenny). Il me semble qu’il serait intéressant de citer les sources qui vont ont certainement soulagé le mal de tête.
En dehors de cela, votre article est bien fait, mais en ce qui me concerne, je n’arrive pas à savoir si Nginx est lui même en frontal reverse proxy d’ispconfig ou bien est-ce Apache directement sur le port 8080?
Merci pour vos réponses.
Bonjour, Je n’ai jamais vu cet article même si j’ai un temps été un lecteur de HowToForge. Je n’ai même jamais travaillé sur Debian 5 ou alors je ne m’en souviens pas. Dès qu’une source m’est utile je la mets systématiquement dans l’article et pour votre information JE me suis cassé la tête pour faire TOUS mes articles. Ce n’est PAS des copy/paste à deux balles. Je potasse les docs Apache, Nginx, Ispconfig, Debian, CentOs et Suse depuis plusieurs années maintenant. Mais vu que vous semblez sûr de vous, vous demanderez à ce certain Nedim de soulager VOTRE mal de… Voir plus »
Et pour votre information je m’étais inspiré d’une idée de Korben à l’époque …
http://korben.info/configurer-nginx-reverse-proxy.html
Aurais-tu l’obligeance dans ta plus grande mansuétude de cesser de manière immédiate et définitive de déblatérer des inepties ?
Autrement dit. Ta gueule et retourne lire HowToForge.
(Cet avis n’engage que moi ;))
Super, merci pour le tuto! Quelqu’un à t’il tester avec Prestashop?
Salut,
Si j’étais toi je testerais plutôt avec cette procédure qui est plus actuelle 😉
https://www.abyssproject.net/2015/03/installation-de-ispconfig-nginx-php-fpm-5-6-et-mariadb-sur-debian-8/
Hello
Super ! Comment ça se passe avec des sous domaines configurés dans ISPConfig ? Pour les sous domaines on positionne obligatoirement un redirect Apache. Est-il conservé ?
Merci
Nico
Exact et bien vu !
Niveau performance Nginx en solo c’est mieu qu’en reverse proxy ?
Le problème s’est résolu dans la nuit et au réveil s’est revenu , monde de fou
Niveau performance c’est mieux oui car, on se débarrasse de ce bon vieux Apache
Seul truc qui m’angoisse , c’est de convertir mon Htaccess d’un blog wordpress assez chargé avec en plus des scripts de blocages de bot . :s
je crois que les seules différences de config sont les vhosts ( pour eux ca ira ) et le htaccess.
( je viens de restart apache , et ca a tout remis dans l’ordre au deuxieme coup .. )
je pense que je franchirai le pas quand je changerai de serveur .
Y’a tout WordPress.com (tous les blogs gratuits) qui tournent sur Nginx depuis un bout de temps maintenant alors ça devrait se faire facilement :p Il faut tester 😉
Salut et merci pour ce site au top !
J’ai décidé de franchir le pas et mettre avec mon ISP le petit Nginx.
Mais jai eu un petit probleme , mon VPS heberge 3 sites differents et apres avoir suivi ce tuto , tous mes noms de domaines renvoyaient vers le même site. Comme si
location / {
root /var/www/$host/web;
n’etait pas suivi .
J’ai fait marche arriére en suivant le tuto à l’envers sans désinstaller nginx.
Vois tu d’où ca peut venir ?
merci bien 🙂
Salut Mathias,
Alors, j’ai déjà eu ce problème et si mes souvenirs sont bons, cela vient du fait que tu utilises la même adresse ip pour tes 3 sites. J’ai juste ?
Si possible, je te recommanderais de mettre Nginx en serveur web principal :
https://www.abyssproject.net/2015/01/installation-de-ispconfig-nginx-php-fpm-5-6-et-mariadb-sur-debian-7/