Переадресация портов бродяги не работает [закрыто]


я столкнулся с небольшой проблемой в конце руководство по началу работы для vagrant. Я работаю на CentOS basebox, который имеет apache2 работает (подготовка через Puppet). Я настроил переадресацию портов для веб-запросов, используя следующую строку Vagrantfile:

 config.vm.forward_port "web", 80, 4567

но когда я делаю запросы к этому порту, они терпят неудачу. Ошибка, о которой сообщает Safari,- "Safari не может открыть страницу"http://localhost:4567/" потому, что сервер неожиданно отключил связь.-

Я vagrant reload и увидел "[по умолчанию] -- web: 80 => 4567 (адаптер 1)" в прокрутке, так где я должен начать устранять эту проблему? Спасибо.

5 100

5 ответов:

Я сделаю это реальный ответ, а не просто комментарии.

первое: попробуйте curl 'http://localhost:80' внутри виртуальной машины. Если это не работает, то это определенно не переадресация портов.

следующий: попробовать curl -v 'http://localhost:4567/' С вашего хост-компьютера. Curl может дать вам лучшее сообщение об ошибке, чем Safari.

Я бы проверил, что нет брандмауэров, настроенных на ограничение доступа к порту 80. По умолчанию Vagrant VM (Ubuntu) не поставляется с установленным брандмауэром, но вы сказали вы используете что-то еще, так что, возможно, стоит проверить.

если это не так, попробуйте сделать что-то другое, чем Apache, указанный на порту 80. Python поставляется с простым HTTP-сервером, который вы можете использовать-перейдите в папку с index.html и работать sudo python -m SimpleHTTPServer 80, а затем попробуйте ударить, что с завитком из обеих коробок. Если это работает, то это, вероятно, проблема конфигурации Apache. У меня нет достаточного опыта работы с Apache, чтобы помочь, если это так (я использовать nginx).

Я хотел добавить дополнительную заметку, что часто это вызвано сервером в виртуальной машине, потому что он привязывается к 127.0.0.1, который является петлевым. Вы хотите убедиться, что сервер привязан к 0.0.0.0 Так что все интерфейсы могут получить доступ к нему.

некоторые встроенные серверы приложений, такие как серверы разработки Django и некоторые серверы Ruby по умолчанию 127.0.0.1 по умолчанию, так это то, чтобы следить за.

кроме этого, то, что сказал Стив, верно: убедитесь, что это работает изнутри виртуальной машины и попробуйте некоторые другие простые серверы, чтобы попытаться выяснить, является ли это проблемой конфигурации.

у меня была такая же проблема на CentOS 6.3 w/ NGINX и я нашел ответ в iptables на коробке vagrant.

из bash on the vagrant box выполните следующие действия:

первый список текущих правил iptable

iptables -L -v

затем сбросить текущие правила:

iptables -F

разрешить SSH-соединения на tcp-порту 22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

установите политики по умолчанию для входных, прямых и выходных цепей

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

настроить доступ к localhost

iptables -A INPUT -i lo -j ACCEPT

принимать пакеты, принадлежащие установленным и связанным соединениям

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

сохранить настройки

/sbin/service iptables save

список измененных правил

iptables -L -v

Curl localhost: [port#] или нажмите его в вашем браузере со стороны vagrant

дополнительная информация о CentOS iptable configs находится здесь:

http://wiki.centos.org/HowTos/Network/IPTables

удачи.

лучшим решением для меня является отключения брандмауэра

service iptables stop
chkconfig iptables off

Я хочу добавить еще одну заметку, как Митчелл, а также. если мой случай я переправляю его в 6789 из 80

$ curl -v http://localhost:6789

и я

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

затем, я использовал IP-адрес вместо этого, он получил правильное сообщение.