Passer au contenu principal

Serveur dédié : Configurer un Reverse Proxy avec nginx sur Linux

Ce guide a été créé avec les produits suivants :

(Les détails peuvent varier selon les produits de différents fournisseurs, mais les concepts principaux restent les mêmes)

Introduction

Un serveur reverse proxy est un serveur qui agit comme intermédiaire entre les utilisateurs finaux et un autre serveur. Les sites web et les serveurs de jeux sont des cas d’usage populaires pour mettre en place un reverse proxy, chacun avec ses avantages variés, notamment en termes de sécurité, facilité d’accès et protection.

Dans ce guide, nous allons explorer le processus de configuration d’un reverse proxy polyvalent pour sites web ainsi qu’un adapté aux serveurs de jeux.

Préparation

Pour configurer un reverse proxy, vous aurez besoin d’un serveur Linux qui hébergera votre proxy. Dans cet exemple, nous utiliserons Ubuntu comme distribution Linux, mais les étapes d’installation devraient être très similaires pour la plupart des distributions Linux.

Specs VPS recommandés

Pour un reverse proxy destiné aux serveurs de jeux, nous recommandons vivement d’opter pour des vitesses réseau élevées, surtout si votre serveur accueille beaucoup de joueurs. En effet, votre VPS va streamer du TCP/UDP brut directement entre le client (joueur) et le serveur de jeux. Sinon, un serveur avec des specs de base et peu d’améliorations suffira pour un proxy lié au web. :)

Nous recommandons de configurer le proxy avec un domaine que vous possédez. Pour chaque sous-domaine que vous souhaitez utiliser, vous devez créer un enregistrement DNS A (par exemple zapdocs.example.com), pointant vers l’adresse IP de votre VPS Linux. C’est ce que les utilisateurs utiliseront pour accéder à votre site web ou serveur de jeux.

Accès au VPS

Avec votre VPS Linux prêt, vous devrez vous y connecter. Utilisez notre guide Accès SSH initial pour en savoir plus sur la procédure.

Installation de Nginx

Vous utiliserez Nginx pour héberger un serveur reverse proxy car c’est un serveur web open-source très performant et populaire.

Une fois connecté à votre VPS, utilisez la commande suivante pour installer Nginx.

sudo apt install nginx

Une fois installé, vous devrez ajuster votre pare-feu pour que le service soit accessible depuis Internet. Pour ce guide, nous utiliserons le pare-feu UFW car Nginx s’enregistre comme une application, ce qui facilite la configuration. Vous pouvez en apprendre plus sur le pare-feu UFW avec notre guide Conseils de sécurité Linux.

note

Si vous utilisez d’autres pare-feux (comme Iptables), assurez-vous de bien autoriser l’accès à Nginx, notamment sur les ports 80 et 443 où le service nginx opère.

Vous pouvez vérifier les profils Nginx avec la commande sudo ufw app list. Ici, nous sélectionnerons l’option Nginx Full, qui donne accès au HTTP pour les tests et au HTTPS pour la production.

sudo ufw allow 'Nginx Full'

Avec Nginx configuré, essayez d’accéder à la page via un navigateur pour vérifier que tout fonctionne comme prévu. Si la page de test s’affiche correctement, vous pouvez continuer le guide.

http://[votre_ip_serveur]

Pour les sites web

Un reverse proxy pour sites web peut être très utile pour plusieurs raisons, notamment rediriger vers des ressources internes comme une instance Vaultwarden (sans avoir besoin du port dans l’URL), ou relayer l’utilisateur vers du contenu externe, ce qui est pratique pour la répartition de charge et la protection.

Un des plus gros avantages est que votre serveur peut gérer des requêtes provenant de plusieurs sources/domaine, contrairement à un serveur web unique fonctionnant sur le port 80/443.

Configuration Nginx

Commencez par créer une entrée dans le répertoire Nginx pour le domaine que vous avez choisi, généralement un sous-domaine comme zapdocs.example.com dans notre exemple.

important

Assurez-vous d’avoir configuré un enregistrement A pointant vers l’adresse IP de votre serveur proxy avant de continuer. Sans cela, le domaine et les étapes suivantes ne fonctionneront pas comme prévu.

Accédez au dossier des blocs serveur avec la commande suivante. C’est ici que vous stockerez toutes vos configurations proxy.

cd /etc/nginx/sites-available/

Créez maintenant un nouveau fichier de configuration. Nous recommandons d’utiliser le nom de domaine comme nom de fichier pour faciliter l’identification (ex. zapdocs.example.com). Remplacez [your_filename] par le nom de fichier que vous souhaitez.

sudo nano [your_filename]

Cela ouvrira l’éditeur nano, où vous pourrez entrer le contenu. Copiez le modèle suivant dans l’éditeur. Vous devez remplacer [your_domain] par le domaine que vous souhaitez proxyfier, suivi de [your_target_server] par le serveur cible que vous voulez atteindre.

upstream targetServer {
# Ajoutez le serveur cible que vous souhaitez atteindre. Cela peut être :
# Redirection interne "localhost" (ex. 127.0.0.1:9090)
# Serveur externe (ex. 103.146.43.52:9000)
server [your_target_server];
}

server {
listen 80;
listen [::]:80;

# Domaine à gérer (ex. zapdocs.example.com)
server_name [your_domain];

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_pass http://targetServer;
}
}

Une fois tous les paramètres adaptés à votre configuration, sauvegardez le fichier et quittez nano avec CTRL + X, puis Y pour confirmer et enfin ENTER.

Vous devez maintenant activer ce bloc serveur en créant un lien symbolique vers le dossier actif.

sudo ln -s /etc/nginx/sites-available/[your_filename] /etc/nginx/sites-enabled/[your_filename]

Pour vérifier que tout est correct, notamment la syntaxe, utilisez sudo nginx -t. Si tout est OK, la dernière étape est de redémarrer Nginx pour appliquer le nouveau bloc serveur.

systemctl reload nginx.service

Une fois le service redémarré, testez l’accès au domaine que vous avez configuré pour le reverse proxy dans votre navigateur. Si tout fonctionne, la page devrait charger le contenu défini dans le paramètre targetServer. En cas de problème, consultez les logs pour dépanner avec journalctl -f -u nginx.service afin d’identifier d’éventuelles erreurs.

Pour les serveurs de jeux

Un reverse proxy pour serveurs de jeux peut être très utile pour plusieurs raisons, notamment pour offrir une couche supplémentaire de sécurité et de fiabilité en améliorant la mitigation et en restreignant l’accès à l’hôte principal.

astuce

La plupart des serveurs dédiés de jeux fonctionnent parfaitement avec un proxy TCP/UDP brut que vous allez configurer. Cependant, une petite minorité de jeux comme BeamMP peuvent mal fonctionner avec les VPN et proxies, donc il faudra tester au cas par cas.

Configuration Nginx

Cette configuration nécessite le module Nginx Stream, qui ne fait pas partie d’une installation Nginx par défaut.

Installer le module Nginx stream

sudo apt install -y libnginx-mod-stream

Configuration du stream Nginx

Vous allez ajouter un nouveau bloc stream dans le fichier principal nginx.conf où vous définirez le serveur en amont et le port sur lequel il sera accessible via votre proxy.

Ouvrez simplement le fichier avec la commande suivante.

sudo nano /etc/nginx/nginx.conf

Collez dans ce fichier le modèle suivant qui ajoute un bloc stream. Remplacez [your_target_server] par le serveur vers lequel vous souhaitez streamer, avec le port correspondant (par exemple :30120 pour FiveM). Remplacez aussi [your_port_listener] par le port sur lequel les utilisateurs accéderont via le proxy.

stream {
upstream targetServer {
# Ajoutez le serveur cible que vous souhaitez atteindre (ex. 103.146.43.52:30120)
server [your_target_server];
}

server {
# Port d’écoute qui accepte et relaie les connexions (ex. 30120)
listen [your_port_listener];
proxy_pass targetServer;
}
}

En gros, Nginx écoutera sur ce port spécifique les connexions entrantes et streamera tout vers le serveur cible que vous avez défini (de votre proxy vers votre vrai serveur de jeux).

Une fois tous les paramètres adaptés, sauvegardez et quittez nano avec CTRL + X, puis Y et ENTER.

Pour vérifier la syntaxe, utilisez sudo nginx -t. Si tout est OK, redémarrez Nginx pour appliquer la nouvelle config.

systemctl reload nginx.service

Après redémarrage, essayez de vous connecter à votre serveur de jeux via le domaine proxy. Si ça marche, vous devriez pouvoir rejoindre le serveur de jeux défini dans le paramètre targetServer. En cas de souci, consultez les logs avec journalctl -f -u nginx.service pour identifier les erreurs.

Certificat SSL

Avec votre reverse proxy configuré, nous recommandons vivement d’ajouter un certificat SSL à vos domaines utilisés pour garantir que les données transitent de manière sécurisée via HTTPS. Consultez notre guide Installer Certbot qui couvre tout le processus de demande et de renouvellement automatique des certificats SSL pour vos domaines.

Conclusion

Bravo, vous avez configuré avec succès un reverse proxy pour un site web ou votre serveur de jeux (ou les deux :), vous offrant ainsi plusieurs améliorations en termes de sécurité, fiabilité et performance. Pour toute question ou aide, n’hésitez pas à contacter notre support, disponible tous les jours pour vous assister ! 🙂