Comment changer le port par défaut pour Nginx ?

Publié 13 octobre 2024

Problème : Modifier le port par défaut de Nginx

Par défaut, Nginx utilise le port 80 pour le trafic HTTP. Il peut parfois être nécessaire de changer ce port, par exemple pour exécuter plusieurs serveurs web ou pour des raisons de sécurité.

Modification de la configuration de Nginx

Changement du port dans le bloc server

Pour changer le port de Nginx, modifiez la directive 'listen' dans le bloc server. Trouvez le bloc server dans votre fichier de configuration. La directive 'listen' se trouve généralement en haut de ce bloc.

Pour changer le port, remplacez le numéro de port actuel par celui de votre choix. Par exemple, pour passer du port 80 au port 8080, modifiez la ligne comme suit :

listen 8080;

Pour les adresses IPv6, utilisez des crochets :

listen [::]:8080;

Vous pouvez spécifier à la fois les adresses IPv4 et IPv6 :

listen 8080;
listen [::]:8080;

Conseil pour le choix du port

Choisissez un numéro de port supérieur à 1024 pour les utilisateurs non-root. Les ports inférieurs à 1024 sont réservés aux processus système et nécessitent des privilèges root pour être utilisés.

Mise à jour des paramètres de configuration associés

Après avoir changé le port, vous devrez peut-être mettre à jour d'autres paramètres :

  1. Modifiez la directive server_name si elle inclut un numéro de port :
server_name example.com:8080;
  1. Pour les configurations de proxy inversé, ajustez vos paramètres de proxy. Mettez à jour la directive proxy_pass avec le nouveau port :
proxy_pass http://backend_server:8080;
  1. Si vous utilisez HTTPS, mettez à jour votre configuration SSL/TLS. Modifiez la directive listen pour HTTPS :
listen 8443 ssl;

Mettez également à jour les règles de redirection qui font référence à l'ancien port.

Testez votre configuration après avoir effectué ces modifications pour éviter tout problème.

Test de la nouvelle configuration

Après avoir modifié le port de configuration de Nginx, testez la nouvelle configuration pour vous assurer qu'elle fonctionne. Suivez ces étapes :

  1. Vérifiez la syntaxe du fichier de configuration modifié : Exécutez cette commande pour vérifier vos modifications :

    nginx -t

    S'il n'y a pas d'erreurs, vous verrez un message indiquant que le test est réussi.

  2. Rechargez Nginx pour appliquer les changements : Si la vérification de syntaxe est réussie, rechargez Nginx :

    sudo systemctl reload nginx

    Ou, si vous utilisez un système d'init différent :

    sudo service nginx reload
  3. Vérifiez que le nouveau port est actif et répond : Utilisez un navigateur web ou curl pour vérifier si Nginx écoute sur le nouveau port :

    curl http://localhost:8080

    Remplacez 8080 par le numéro de port que vous avez choisi. Si Nginx fonctionne, vous devriez voir la page d'accueil par défaut de Nginx ou le contenu de votre site web.

Vous pouvez également utiliser la commande netstat pour vérifier si Nginx écoute sur le nouveau port :

sudo netstat -tuln | grep :8080

Cette commande montrera si un processus (Nginx) écoute sur le port 8080.

Si vous rencontrez des problèmes lors des tests, revoyez vos modifications de configuration et consultez les logs d'erreur de Nginx pour plus d'informations.

Conseil: Résolution des conflits de ports

Si Nginx ne démarre pas sur le nouveau port, vérifiez si une autre application l'utilise. Utilisez la commande suivante pour identifier les processus utilisant un port spécifique :

sudo lsof -i :8080

Remplacez 8080 par le numéro de port que vous avez choisi. Si un processus utilise le port, vous devrez soit arrêter ce processus, soit choisir un port différent pour Nginx.

Résolution des problèmes courants

Erreur "Address already in use"

Lorsque vous changez le port de Nginx, vous pouvez obtenir une erreur "Address already in use". Cela se produit lorsqu'un autre service utilise le port que vous voulez pour Nginx. Pour résoudre ce problème :

  1. Trouvez les services en conflit : Utilisez netstat ou ss pour vérifier quel processus utilise le port :

    sudo netstat -tuln | grep :8080

    ou

    sudo ss -tuln | grep :8080

    Remplacez 8080 par le numéro de port souhaité.

  2. Arrêtez ou modifiez les applications en conflit : Si vous trouvez un conflit, vous pouvez :

    • Arrêter le service : sudo systemctl stop nom_du_service
    • Changer le service pour qu'il utilise un port différent
  3. Vérifiez l'utilisation du port : Après avoir résolu les conflits, vérifiez que le port est libre :

    sudo netstat -tuln | grep :8080

    Si le port est libre, vous ne verrez aucun résultat.

Configuration du pare-feu

Après avoir changé le port de Nginx, mettez à jour les règles de votre pare-feu pour autoriser le trafic sur le nouveau port :

  1. Pour UFW :

    sudo ufw allow 8080/tcp
  2. Pour iptables :

    sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
  3. Si vous utilisez SELinux, mettez à jour ses paramètres :

    sudo semanage port -a -t http_port_t -p tcp 8080

Remplacez 8080 par le numéro de port que vous avez choisi dans ces commandes.

Après avoir mis à jour les règles du pare-feu, rechargez votre configuration de pare-feu pour appliquer les changements.

Conseil: Désactivation temporaire du pare-feu

Si vous rencontrez encore des problèmes après avoir mis à jour les règles du pare-feu, vous pouvez désactiver le pare-feu pour tester s'il est à l'origine du problème. N'oubliez pas de le réactiver après le test :

sudo ufw disable  # Pour UFW
sudo systemctl stop firewalld  # Pour firewalld

Méthodes alternatives pour le changement de port

Utilisation de fichiers d'inclusion pour la configuration des ports

Vous pouvez gérer les paramètres de port en créant des fichiers de configuration séparés. Cette méthode permet une maintenance plus facile de votre configuration Nginx.

  1. Créez un nouveau fichier pour les paramètres de port :

    sudo nano /etc/nginx/conf.d/ports.conf
  2. Ajoutez votre configuration de port à ce fichier :

    server {
       listen 8080;
       # Autres paramètres du bloc server
    }
  3. Dans votre fichier de configuration principal Nginx, incluez le nouveau fichier :

    include /etc/nginx/conf.d/ports.conf;

Cette approche vous permet de modifier les paramètres de port sans changer le fichier de configuration principal.

Conseil: Contrôle de version pour les fichiers de configuration

Stockez vos fichiers de configuration Nginx, y compris le fichier de configuration de port séparé, dans un système de contrôle de version comme Git. Cela vous permet de suivre les modifications, de revenir en arrière si nécessaire et de collaborer plus facilement avec les membres de l'équipe.

Utilisation des variables d'environnement

L'utilisation de variables d'environnement pour les numéros de port ajoute de la flexibilité à votre configuration Nginx, en particulier dans les environnements conteneurisés.

  1. Définissez une variable d'environnement pour votre port :

    export NGINX_PORT=8080
  2. Modifiez votre configuration Nginx pour utiliser cette variable :

    server {
       listen ${NGINX_PORT};
       # Autres paramètres du bloc server
    }
  3. Démarrez Nginx avec la variable d'environnement :

    nginx -g 'daemon off;'

Cette méthode vous permet de changer le port sans modifier le fichier de configuration, ce qui est utile pour les déploiements dans différents environnements.

Exemple: Utilisation des variables d'environnement dans Docker

FROM nginx:latest
ENV NGINX_PORT=8080
COPY nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]

Dans cet exemple Docker, la variable d'environnement NGINX_PORT est définie dans le Dockerfile, permettant une configuration facile du port lors de la construction ou de l'exécution du conteneur.

N'oubliez pas de tester votre configuration après avoir effectué ces modifications pour vous assurer que tout fonctionne comme prévu.