it-swarm-ru.tech

Могу ли я указать порт в записи в моем / etc / hosts на OS X?

Возможный дубликат:
Как использовать DNS для перенаправления домена на определенный порт на моем сервере

Я хочу заставить свой браузер перейти на localhost: 3000 вместо xyz.com. Я вошел в/etc/hosts на OS X 10.5 и добавил следующую запись:

127.0.0.1:3000 xyz.com

Это не работает, но без указания порта хитрость работает. Есть ли способ сделать это, указав порт?

51
Tony

Нет, файл hosts - это просто способ статического разрешения имен, когда нет DNS-сервера.

47
Chief A-G

Файл hosts предназначен для разрешения DNS. DNS разрешает имена в IP-адреса и, боюсь, не имеет ничего общего с портами. Вам нужно будет использовать что-то еще вместе с файлом hosts для перенаправления порта (измените заголовок TCP, изменив порт назначения).

С помощью iptables:
Использует ли MAC OS iptables/netfilter (я так не думал) ..? Если OS X использует iptables, вы можете указать xyz.com на какой-нибудь ip в файле hosts, например 157.166.226.25, а затем:

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

Вам не нужно указывать порт в файле hosts. просто сделайте запись, как вы сделали, опуская порт, как в 127.0.0.1 xyz.com, это перенаправит вас на ваш локальный хост, затем просто добавьте порт 3000 в конец вашего URL ... http://xyz.com:30

12
stuart Brand

Предполагая, что вы пытаетесь перехватить http, а не https, вам нужно будет прослушивать порт 80 на вашем локальном компьютере, но тогда вы сможете использовать функции переадресации портов ssh, выполнив команду ssh на localhost с помощью -L80:localhost:3000, но вам придется сделать это как root.

Вероятно, было бы лучше иметь все, что работает на порту 3000, просто вместо этого слушайте порт 80.

Если вы управляете маршрутизатором между вами и xyz.com, вы можете вместо этого настроить правило переадресации портов.

4
retracile

Решение DNS для этого заключается в использовании записей SRV:

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

Это способ разрешить DNS, который изначально был распределенной базой данных "имя-номер" или "номер-имя", включать конечную точку "имя-служба", которая могла (необязательно) включать протокол и порт.

Плохая новость заключается в том, что необходимо разрабатывать приложения для использования записей SRV, поэтому это не решение для того, что вы пытаетесь сделать.

3
James F

Я думаю, что вам нужно использовать какой-то прокси-сервер или что-то с программным обеспечением брандмауэра для перенаправления подключений портов ...

2
Bart Silverstrim

Chief-AG прав в том, что файл hosts используется для статического разрешения имен (присутствие DNS не имеет значения). Тем не менее, может быть комбинация вещей, которые вы могли бы сделать.

  1. Установите запись в файле hosts на 127.0.0.1 xyz.com
  2. настроить вашу машину для виртуальных хостов .
  3. Для виртуального хоста, который вы настроили для xyz.com, создайте html-файл, который перенаправляет на localhost: 3000

Кажется, это большая часть работы, но она выполнила бы то, что вы просите.

2
Forgotten Semicolon

я предполагаю, что это для Rails разработка? если так, то запустите скрипт/сервер -p 80, чтобы он работал на стандартном веб-порту. тогда ваш xyz.com будет работать

1
Ryan

В качестве альтернативы виртуальным хостам; вы можете создать туннель ssh, прослушивающий порт 80 и перенаправляющий на localhost: 3000.

1
evilchili

Если вы используете Apache в качестве веб-сервера на xyz.com, вы можете использовать Apache ProxyPass для "преобразования" в другой порт.

0
Rory