Il y a un malentendu sur hosts
ici.
Tout d'abord, le fichier d'hôtes a la priorité sur le DNS sur la plupart des systèmes d'exploitation, vous pouvez les définir sur les systèmes d'exploitation Linux/Unix et macOS en /etc/hosts
y c:\windows\system32\drivers\etc\hosts
sur Windows .
Donc quand vous ajoutez un enregistrement dans votre fichier d'hôtes comme :
127.0.0.1 repo.sweetsoft
et essayer d'ouvrir http://repo.sweetsoft/ dans votre navigateur, il n'envoie pas de requête DNS au monde extérieur et utilise cette entrée de votre fichier d'hôtes.
Gardez à l'esprit que cela ne fonctionne que pour les enregistrements A (résolution d'un nom ou d'une adresse de domaine vers une adresse IPv4) et AAAA (résolution d'un nom ou d'une adresse de domaine vers une adresse IPv6) et que vous ne pouvez pas définir les enregistrements TXT ou MX par exemple.
Mais les numéros de port se trouvent dans une couche réseau différente, le fichier hosts ne comprend que les noms (comme repo.sweetsoft) et les adresses IP, c'est la couche 3 et 4 du modèle ISO (Réseau/Transport) mais les numéros de port sont dans la couche 7 (couche application).
Vérifier le modèle OSI
Modèle OSI vs TCP/IP
Depuis hosts
ou le protocole DNS ne sont pas conscients des couches d'application, ils n'ont aucune idée des numéros de port également.
Votre configuration en ajoutant 127.0.0.1:9000
à votre fichier hosts est comme ajouter des numéros de port aux enregistrements A du DNS.
Après cette clarification, vous pouvez résoudre ce problème de plusieurs façons :
-
Exécuter votre application sur le port 80. Cela résout votre problème et lève toute ambiguïté.
-
Transférer le port 80 vers le port 9000 sur votre machine via iptables
This command will forward all requests destined to port 80 and makes a lot of conflicts, I suggest socat
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 9000
-
Transférez le port 80 vers le port 9000 de votre machine via socat :
apt install socat -y
socat TCP-LISTEN:80,fork TCP:127.0.0.1:9000
Si vous ne pouvez pas changer le port de votre application, socat sera le moyen le plus simple.
Pour une utilisation quotidienne, vous pouvez écrire un fichier de service systemd pour l'exécuter en arrière-plan.