Вопрос

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

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

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

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

Это было полезно?

Решение

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

Первым делом:пытаться 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 с NGINX, и я нашел ответ в iptables на бродячем поле.

Из bash на бродячем поле выполните следующие действия:

Сначала перечислите текущие правила iptable.

iptables -L -v

Затем очистите текущие правила:

iptables -F

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

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

Установите политики по умолчанию для цепочек INPUT, FORWARD и OUTPUT.

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

Установите доступ для локального хоста

iptables -A INPUT -i lo -j ACCEPT

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

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

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

/sbin/service iptables save

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

iptables -L -v

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

Дополнительную информацию о конфигурациях iptable CentOS можно найти здесь:

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-адрес и получил правильное html-сообщение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top