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

<blockquote> <p><strong> возможный дубликат: </strong><br> <a href="https://serverfault.com/questions/74362/how-to-use-dns-to-redirect-domain-to-specific-port-on-my-server">как использовать dns для перенаправления домена на определенный порт на моем сервере</a> </p> </blockquote><p>я хочу заставить свой браузер перейти на localhost: 3000 вместо xyz.com. я вошел в/etc/hosts на os x 10.5 и добавил следующую запись:</p><pre><code>127.0.0.1:3000 xyz.com </code></pre><p>это не работает, но без указания порта хитрость работает. есть ли способ сделать это, указав порт?</p>

<p>нет, файл hosts - это просто способ статического разрешения имен, когда нет dns-сервера.</p>

<p>файл hosts предназначен для разрешения dns. dns разрешает имена в ip-адреса и, боюсь, не имеет ничего общего с портами. вам нужно будет использовать что-то еще вместе с файлом hosts для перенаправления порта (измените заголовок tcp, изменив порт назначения).</p><p><strong>с помощью iptables:</strong><br> использует ли mac os iptables/netfilter (я так не думал) ..? если os x использует iptables, вы можете указать xyz.com на какой-нибудь ip в файле hosts, например 157.166.226.25, а затем:</p><pre><code>sudo iptables -t nat -a output -p tcp --dport 80 -d 157.166.226.25 -j dnat --to-destination 127.0.0.1:3000 </code></pre><p>:-)</p>

<p>вам не нужно указывать порт в файле hosts. просто сделайте запись, как вы сделали, опуская порт, как в 127.0.0.1 xyz.com, это перенаправит вас на ваш локальный хост, затем просто добавьте порт 3000 в конец вашего url ... <a href="http://xyz.com:3000">http://xyz.com:30</a> </p>

<p>предполагая, что вы пытаетесь перехватить http, а не https, вам нужно будет прослушивать порт 80 на вашем локальном компьютере, но тогда вы сможете использовать функции переадресации портов ssh, выполнив команду ssh на localhost с помощью <code>-l80:localhost:3000</code>, но вам придется сделать это как root.</p><p>вероятно, было бы лучше иметь все, что работает на порту 3000, просто вместо этого слушайте порт 80.</p><p>если вы управляете маршрутизатором между вами и xyz.com, вы можете вместо этого настроить правило переадресации портов.</p>

<p>решение dns для этого заключается в использовании записей srv:</p><p> <a href="http://en.wikipedia.org/wiki/srv\_record">http://en.wikipedia.org/wiki/srv\_record</a> </p><p>это способ разрешить dns, который изначально был распределенной базой данных "имя-номер" или "номер-имя", включать конечную точку "имя-служба", которая могла (необязательно) включать протокол и порт.</p><p>плохая новость заключается в том, что необходимо разрабатывать приложения для использования записей srv, поэтому это не решение для того, что вы пытаетесь сделать.</p>

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

<p>chief-ag прав в том, что файл hosts используется для статического разрешения имен (присутствие dns не имеет значения). тем не менее, может быть комбинация вещей, которые вы могли бы сделать.</p><ol> <li>установите запись в файле hosts на 127.0.0.1 xyz.com</li> <li> <a href="http://mark-kirby.co.uk/2008/setting-up-virtual-hosts-on-os-x-leopard/">настроить вашу машину для виртуальных хостов</a> .</li> <li>для виртуального хоста, который вы настроили для xyz.com, создайте html-файл, который перенаправляет на localhost: 3000</li> </ol><p>кажется, это большая часть работы, но она выполнила бы то, что вы просите.</p>

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

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

<p>если вы используете apache в качестве веб-сервера на xyz.com, вы можете использовать apache <a href="http://httpd.apache.org/docs/2.0/mod/mod\_proxy.html#proxypass"><code>proxypass</code></a> для "преобразования" в другой порт.</p>