Nginx Reverse proxy ISP Config 3 Catch-All Host avec Debian Wheezy

//Nginx Reverse proxy ISP Config 3 Catch-All Host avec Debian Wheezy
1/52/53/54/55/5 (Pas encore de note)
Loading...

Nginx Reverse proxy ISP Config 3 Catch-All Host avec Debian Wheezy

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 !

 

By |2016-01-04T21:32:28+00:0013 juin 2014|GNU/Linux|17 Comments

About the Author:

Diplômé d'un BTS SIO SISR et travaillant actuellement en Suisse, je suis passionné par tout ce qui touche à l'informatique et la musique hard rock et métal depuis ma plus tendre enfance. Je suis le créateur et l'unique rédacteur d'Abyss Project, ce blog qui me sert de bloc-notes public en quelque sorte.

17
Poster un Commentaire

avatar
8 Comment threads
8 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
RATEFIARISON Aina Manoawash34ioonerOlivierGuillaume Recent comment authors

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Plus récents Plus anciens Populaires
RATEFIARISON Aina Manoa
Invité

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/

wash34
Invité
wash34

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;
}

wash34
Invité
wash34

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 »

Olivier
Invité
Olivier

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.

iooner
Invité

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 ;))

Guillaume
Invité
Guillaume

Super, merci pour le tuto! Quelqu’un à t’il tester avec Prestashop?

Nicocolt
Invité
Nicocolt

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

Mathias
Invité
Mathias

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

Mathias
Invité
Mathias

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 .

Mathias
Invité
Mathias

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 🙂