sviluppo-web-qa.it

Posso specificare una porta in una voce nel mio / etc / hosts su OS X?

Possibile duplicato:
Come utilizzare DNS per reindirizzare il dominio a una porta specifica sul mio server

Voglio ingannare il mio browser per accedere a localhost: 3000 anziché xyz.com. Sono entrato in/etc/hosts su OS X 10.5 e ho aggiunto la seguente voce:

127.0.0.1:3000 xyz.com

Ciò non funziona ma senza specificare la porta il trucco funziona. C'è un modo per farlo specificando la porta?

51
Tony

No, il file hosts è semplicemente un modo per risolvere staticamente i nomi quando non è presente alcun server DNS.

47
Chief A-G

Il file hosts è per la risoluzione DNS. Il DNS risolve i nomi in indirizzi IP e non ha nulla a che fare con le porte, temo. Dovrai usare qualcos'altro insieme al file hosts per reindirizzare la porta (Mangle TCP intestazione modificando la porta di destinazione).

Con iptables:
MAC OS utilizza iptables/netfilter (non pensavo lo avesse fatto) ..? Se OS X utilizza iptables, puoi puntare xyz.com a qualche ip nel file hosts come 157.166.226.25 e quindi:

Sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000

:-)

45
Kyle Brandt

Non è necessario specificare una porta nel file hosts. basta inserire la voce come se avessi omesso la porta, come in 127.0.0.1 xyz.com, questo ti indirizzerà al tuo Host locale, quindi aggiungi semplicemente la porta 3000 alla fine del tuo URL ... http://xyz.com:30

12
stuart Brand

Supponendo che tu stia cercando di intercettare http e non https, dovresti essere in ascolto sulla porta 80 sul tuo computer locale, ma allora potresti essere in grado di utilizzare le funzionalità di port forwarding di ssh ssh'ing su localhost con -L80:localhost:3000, ma dovrai farlo come root.

Probabilmente sarebbe meglio avere qualunque cosa sia in esecuzione sulla porta 3000, ma basta ascoltare la porta 80.

Se controlli il router tra te e xyz.com, potresti invece impostare una regola di port forwarding.

4
retracile

La soluzione DNS per questo è usare i record SRV:

http://en.wikipedia.org/wiki/SRV_record

Questi sono un modo per consentire al DNS, che in origine era un database distribuito "da nome a numero" o "da numero a nome" di includere "endpoint da nome a servizio", che poteva (facoltativamente) includere un protocollo e una porta.

La cattiva notizia è che le applicazioni devono essere sviluppate per utilizzare i record SRV, quindi non è una soluzione drop-in per quello che stai cercando di fare.

3
James F

Penso che sia necessario utilizzare una sorta di server proxy o forse qualcosa con il software firewall per reindirizzare le connessioni delle porte ...

2
Bart Silverstrim

Chief-AG ha ragione nel dire che il file hosts è usato per risolvere staticamente nomi (la presenza DNS è irrilevante). Tuttavia, potrebbe esserci una combinazione di cose che potresti fare.

  1. Impostare il record nel file hosts su 127.0.0.1 xyz.com
  2. Configura la tua macchina per host virtuali .
  3. Per l'host virtuale configurato per xyz.com, creare un file html che reindirizzi a localhost: 3000

Sembra essere un bel po 'di lavoro, ma realizzerebbe quello che stai chiedendo.

2

suppongo che questo sia per Rails sviluppo? in tal caso, quindi esegui script/server -p 80 per farlo funzionare sulla porta web standard. quindi il tuo xyz.com funzionerà

1
Ryan

In alternativa agli host virtuali di;, è possibile creare un tunnel ssh in ascolto sulla porta 80 e inoltro a localhost: 3000.

1
evilchili

Se si utilizza Apache come server Web su xyz.com, è possibile utilizzare Apache ProxyPass per "convertire" in un'altra porta.

0
Rory