Qu'est-ce qu'un proxy inverse ?
Un serveur proxy standard fonctionne au nom des clients, souvent en assurant la confidentialité ou en filtrant le contenu. Un proxy inverse fonctionne pour le compte d'un serveur, interceptant le trafic et l'acheminant vers un serveur séparé.
Il existe plusieurs raisons pour lesquelles vous pourriez vouloir installer un proxy inverse. L'une des principales raisons est la confidentialité.
Si vous avez plusieurs serveurs, un proxy inverse peut aider à équilibrer les charges entre les serveurs et à améliorer les performances. Comme un proxy inverse fournit un point de contact unique pour les clients, il peut centraliser la journalisation et les rapports sur plusieurs serveurs.
Nginx peut améliorer les performances en diffusant rapidement du contenu statique et en transmettant des demandes de contenu dynamique aux serveurs Apache.
Ce guide vous aidera à installer et à configurer un proxy inverse Nginx sur votre système.
Prérequis
- Un serveur Linux avec Apache, PHP et un pare-feu
- Accès à un utilisateur root avec sudo accéder
- Ligne de commande Linux ou terminal (Ctrl –Alt –T pour Ubuntu, Alt –F2 pour CentOS)
- Gestionnaire de packages (comme APT)
Configuration d'un proxy inverse Nginx
Étape 1 :Installez Nginx à partir des référentiels par défaut
Ouvrez une fenêtre de terminal et entrez ce qui suit :
sudo apt-get update
Laissez le gestionnaire de packages terminer l'actualisation des listes de logiciels, puis saisissez ce qui suit :
sudo apt-get install nginx
Laissez le processus se terminer.
Étape 2 (facultative) :Installer Nginx à partir du référentiel officiel
Ajouter une clé de sécurité
Dans une fenêtre de terminal, saisissez ce qui suit :
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Cela télécharge la clé de signature pour Nginx, qui vérifie que vous téléchargez un logiciel authentique.
Ouvrir sources.list Fichier à éditer
Dans le terminal, saisissez ce qui suit :
sudo vi /etc/apt/sources.list
Ajouter des sources Nginx à la liste des référentiels
Entrez les lignes suivantes dans le /etc/apt/sources.list
fichier que vous venez d'ouvrir :
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
Remplacer <CODENAME>
avec le nom de code de votre distribution de Debian.
Enregistrer le fichier et quittez .
Installer la dernière version de Nginx
Pour installer la dernière version de Nginx, utilisez les commandes :
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
Étape 3 :Démarrez Nginx et configurez-le pour le lancer au redémarrage
Pour démarrer Nginx :
sudo systemctl start nginx
Pour activer Nginx :
sudo systemctl enable nginx
Pour vérifier que Nginx est en cours d'exécution :
sudo systemctl status nginx
La sortie doit vous montrer que le service est actif (en cours d'exécution) , comme dans l'image ci-dessous :
Étape 4 :Dissocier le fichier de configuration par défaut
Dans le terminal, saisissez ce qui suit :
sudo unlink /etc/nginx/sites-enabled/default
Étape 5 :Créer un nouveau fichier de configuration
Pour créer un nouveau fichier de configuration, saisissez :
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
Remplacez custom_server
avec un nom qui a du sens pour vous. Dans le nouveau fichier, saisissez :
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
Ceci est un exemple très basique de proxy inverse Nginx. Nginx est configuré pour écouter tout le trafic sur le port 80 pour tout le trafic.
Le proxy_pass
la commande dirige tout le trafic sur le port 80 vers http://my_server
. Changez simplement http://my_server
à l'emplacement de votre choix, et Nginx interceptera les demandes des clients et les acheminera vers l'emplacement que vous spécifiez. Une fois que vous avez terminé, enregistrez le fichier et quittez.
Étape 6 :Liez et activez le fichier de configuration
Pour activer le nouveau fichier Nginx, saisissez :
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
Comme d'habitude, remplacez custom_server
avec le nom du fichier de configuration que vous avez créé à l'étape 5.
Étape 7 :Tester et redémarrer Nginx
Pour tester Nginx :
sudo service nginx configtest
Pour redémarrer Nginx :
sudo service nginx restart
Options de configuration Nginx facultatives
Tampons proxy
Par défaut, Nginx met en mémoire tampon le trafic des serveurs pour lesquels il assure le proxy. Les tampons améliorent les performances du serveur car une réponse du serveur n'est pas envoyée tant que le client n'a pas fini d'envoyer une réponse complète.
Pour désactiver le tampon, ouvrez le fichier de configuration de l'étape 5. Sous location/section , ajoutez ce qui suit :
proxy_buffering off;
En-têtes de demande
Les en-têtes fournissent au serveur des informations sur les requêtes effectuées ou sur le client.
Nginx redéfinit deux des champs d'en-tête :host
est configuré pour $proxy_host
, et connection
est configuré pour close
. Si vous utilisez ces en-têtes, assurez-vous de modifier le comportement dans le fichier de configuration.
Si des chaînes d'en-tête sont vides, Nginx élimine simplement ces champs.
Pour modifier la façon dont Nginx gère les bruyères, utilisez les commandes suivantes dans votre fichier de configuration :
location / {
proxy_set_header Host $host;
}
Cet exemple indique à Nginx de définir host
au $host
variables.
Pour empêcher qu'un champ d'en-tête ne soit transmis au serveur proxy, utilisez une chaîne vide comme suit :
location / {
proxy_set_header header-variable "";
}
Équilibrage de charge
Vous pouvez utiliser le fichier de configuration pour acheminer le trafic vers plusieurs serveurs. Pour utiliser cette configuration, votre fichier de configuration ressemblera à cet exemple :
http {
server {
proxy_pass http://my_server
}
}
En d'autres termes, la configuration HTTP sort de la configuration du serveur de l'étape 5.
Pour créer un nom pour un groupe de serveurs, utilisez le upstream
commande :
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
Cette désignation prend deux serveurs – my.server1.com
et my.server2.com
– et les regroupe. Nginx proxy ce groupe de serveurs sous le nom http://server_group
. Vous pouvez les renommer comme vous le souhaitez.
Cet exemple utilise le weight
commande pour acheminer trois requêtes vers my.server1.com
, puis 1 requête à my.server2.com
. Il s'agit d'une option pour équilibrer manuellement la charge client entre les serveurs. Une autre méthode consiste simplement à omettre toute désignation, dans laquelle Nginx répartira les requêtes de manière égale entre les serveurs répertoriés.