269 votes

Utilisation du numéro de port dans le fichier hôte de Windows

Après avoir installé TeamViewer, j'ai changé le port du wampserver en 8080, l'adresse est donc la suivante http://localhost:8080.

Pour le fichier hôte situé à C:\WINDOWS\system32\drivers\etc\ J'ai également effectué la modification suivante

AVANT
127.0.0.1 www.example.com

APRÈS
127.0.0.1:8080 www.example.com

Lorsque j'accède à www.example.com, il ne redirige pas vers mon wampserver, comment puis-je y remédier ?

0 votes

Vous avez besoin d'un serveur HTTP NGNIX ou Apache comme serveur proxy pour transmettre les demandes http à l'application appropriée -> qui écoute un port particulier (ou le faire avec CNAME qui fournit la société d'hébergement).

0 votes

Peut-être revoir cela et changer la réponse acceptée par la réponse netsh ? J'ai atterri ici en essayant de comprendre comment mapper des domaines .test à mes images docker localement sur Windows 10, et la réponse netsh a fonctionné à merveille !

275voto

Pau Coma Ramirez Points 1561

J'y suis parvenu en utilisant Windows inclus Outil de mise en réseau netsh .

Comme le souligne Mat : Le fichier hosts sert uniquement à la résolution des noms d'hôtes, donc une combinaison des deux a fait l'affaire pour moi.

Example


Vue d'ensemble

example.app:80
 |                           <--Link by Hosts File
 +--> 127.65.43.21:80
       |                     <--Link by netsh Utility
       +--> localhost:8081

Actions

  • J'ai démarré mon serveur le localhost:8081
  • J'ai ajouté mon "DNS local" dans le fichier d'hôtes comme une nouvelle ligne
    • 127.65.43.21 example.app
      • Toute adresse libre dans le réseau 127.0.0.0/8 ( 127.x.x.x ) peuvent être utilisés.
      • Note : Je suppose que 127.65.43.21:80 n'est pas occupé par un autre service.
      • Vous pouvez vérifier auprès de netstat -a -n -p TCP | grep "LISTENING"
  • a ajouté la configuration réseau suivante avec commande netsh utilitaire
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Je peux maintenant accéder au serveur à l'adresse http://example.app

Notes :
- Ces commandes/modifications de fichiers doivent être exécutées avec Droits d'administration

- netsh portproxy needs ipv6 libraries même seulement pour utiliser v4tov4, typiquement ils seront aussi inclus par défaut, sinon installez-les en utilisant la commande suivante : netsh interface ipv6 install


Vous pouvez voir l'entrée que vous avez ajouté avec la commande :

netsh interface portproxy show v4tov4

Vous pouvez supprimer l'entrée avec la commande suivante :

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Liens vers des ressources :

0 votes

Ça ne marche pas pour moi. Dans le lien que vous avez montré, il est dit "Vous ne pouvez pas non plus utiliser 127.0.0.1 comme adresse de connexion".

0 votes

@DonBox : Si vous fournissez plus de détails sur votre installation, je pourrais peut-être vous aider. Utilisation de 127.0.0.1 comme adresse de connexion est fondamentalement la condition dans le scénario présenté parce que le serveur a démarré à localhost comme le font par défaut de nombreux autres programmes. Si vous pouvez démarrer à une autre adresse, vous n'avez pas besoin de tout le mécanisme de transfert de port, il vous suffit de modifier le fichier hosts... Peut-être, comme détaillé ici vous n'avez pas le protocole ipv6 installés : utilisez la commande suivante pour les installer : netsh interface ipv6 install

27 votes

Cela devrait être la réponse acceptée car les outils sont déjà installés dans mon installation de base de Windows 10 et cela fait exactement ce dont j'avais besoin. J'envisageais d'installer apache et mod_proxy mais cette solution est bien meilleure.

224voto

Mat Points 104488

El hosts sert uniquement à la résolution du nom de l'hôte (sous Windows ainsi que sur les systèmes de type Unix). Vous ne pouvez pas y mettre de numéros de port, et il n'y a aucun moyen de faire ce que vous voulez avec une configuration générique au niveau du système d'exploitation - c'est le navigateur qui sélectionne le port à choisir.

Utilisez donc des signets ou quelque chose comme ça.
(Certains logiciels de pare-feu/routage peuvent permettre la redirection des ports sortants, mais cela ne semble pas vraiment être une option intéressante dans ce cas).

8 votes

Comment utiliser les signets, pouvez-vous nous indiquer un lien ou une documentation ou un tutoriel à ce sujet ?

0 votes

@Jereme : vous devriez dire cela à l'OP, je ne peux rien y faire.

1 votes

Ce serait bien, non ? Je veux juste que les autres qui voient ça sachent qu'il faut descendre un peu et tenter sa chance. J'ai atterri ici en essayant de comprendre comment mapper les domaines .test à mes images docker localement sur Windows 10, et la réponse netsh a fonctionné comme un charme !

190voto

user01 Points 4568

Ce que vous voulez peut être réalisé en modifiant le fichier hosts par le biais de Fiddler 2 application.

Suivez les étapes suivantes :

  1. Installer Fiddler2

  2. Naviguer dans le menu Fiddler2:- Outils > HOSTS .. (Cliquez pour sélectionner)

  3. Ajoutez une ligne comme ceci:-

    localhost:8080 www.mydomainname.com

  4. Sauvegarder le fichier et passer à la caisse www.mydomainname.com dans le navigateur.

42 votes

C'est une mauvaise solution. Vous devez avoir Fiddler en marche à tout moment.

70 votes

@JamesHuckabone : Vous avez une meilleure solution ? Nous en serions ravis !

17 votes

Je reçois l'erreur 400 Bad Request lorsque j'utilise cette méthode.

16voto

Sergey Points 968

Fiddler2 -> Règles -> Règles personnalisées

puis trouver la fonction OnBeforeRequest sur mettre dans le script suivant à la fin :

if (oSession.HostnameIs("mysite.com")){
    oSession.host="localhost:39901";
}

0 votes

En effet, Fiddler est tellement puissant qu'il ne faut pas s'attendre à faire tourner un serveur web sur le port 80, ou même Skype... Sous Windows, il fonctionne mieux que sous Linux avec Mono, au moins pour les fonctionnalités de capture, car Linux n'utilise pas Inet de CLRL. C'est une meilleure façon de faire les choses avec Fiddler, parce que c'est exportable avec un seul fichier.

6voto

Cristian Oliveira Points 666

Le moyen le plus simple est d'utiliser Ergo comme proxy inverse : https://github.com/cristianoliveira/ergo

Vous définissez vos services et leur IP:PORT et ergo les achemine pour vous :).

Vous pouvez obtenir la même chose en utilisant nginx o apache mais vous devrez les configurer.

8 votes

Ergo semble être un projet sur lequel vous avez travaillé (d'après le nom d'utilisateur). Si c'est le cas, vous devriez indiquer plus explicitement que vous êtes affilié à ce produit. Voir cette réponse ainsi que les autres réponses.

2 votes

@FrankTan ergo es NO un produit à vendre et il est sous licence de Licence MIT ; il n'a même pas de parrainage GitHub en cours, donc, il est tout à fait correct de l'inclure dans une réponse sans mentionner qu'il est le créateur de cet utilitaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X