Не удалось подключиться к Vagrant (ubuntu/trusty64) с хост-компьютера через переадресацию портов

Я установил коробку Vagrant с Ubuntu 14.04, node.js, npm, mongodb, навсегда, развернут и экспресс. Я переадресовал хост-порт 8080 на гостевой порт 80, и у меня есть узел-сервер на гостевой машине, прослушивающий порт 80.

Когда я посещаю http://localhost:8080 в своем браузере, я ожидаю увидеть вывод с моего сервера узла ("Hello World"), но вместо этого я не получаю ответа от браузера.

Изнутри гостевой машины, когда я пытаюсь выполнить curl, я получаю curl: (7) Failed to connect to localhost port 80: Connection refused.

С главной машины, когда я пытаюсь свернуть, я получаю curl: (52) Empty reply from server.

Я попытался разрешить весь входящий веб-трафик, изменив iptables с помощью sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT, сохранил эти настройки и перезапустил машину с помощью vagrant reload. Это не решило проблему.

Мой Vagrantfile выглядит так:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision :shell, :path => "bootstrap.sh"
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

Мой скрипт подготовки выглядит так:

#!/usr/bin/env bash

apt-get update
apt-get upgrade
apt-get install -y python-software-properties python g++ make
add-apt-repository ppa:chris-lea/node.js
apt-get update
apt-get install -y nodejs
export NODE_PATH=$NODE_PATH:/usr/lib/node_modules/
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
apt-get update
apt-get install -y mongodb-10gen
npm install forever -g
npm install deployd -g
npm install express -g
mkdir /data
mkdir /data/db
rm -rf /var/www
ln -fs /vagrant /var/www

Я запускаю forever start server.js для запуска этого примера сервера узлов:

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(80);

Что мне здесь не хватает? Заранее спасибо...


person Shaun Scovil    schedule 15.05.2014    source источник
comment
Вы уверены, что коробка прослушивает порт 8080? нетстат -ntlp | группа 8080   -  person Tiago Lopo    schedule 15.05.2014
comment
@Tiago Да, мой хост-компьютер прослушивает порт 8080. Однако моя гостевая машина (блок Vagrant) НЕ прослушивала порт 80, несмотря на то, что мой сервер узла велел ему это сделать. Проблема заключалась в том, что я не запускал сервер узлов с sudo! facepalm Ваше предложение помогло мне решить эту проблему, поэтому, если вы хотите сделать это ответом, я приму его. Спасибо!   -  person Shaun Scovil    schedule 16.05.2014
comment
Я рад, что это помогло. Я только что создал ответ. ваше здоровье   -  person Tiago Lopo    schedule 16.05.2014


Ответы (1)


Проверьте, прослушивает ли ваш хост порт 8080:

$netstat -ntlp | grep 8080
person Tiago Lopo    schedule 15.05.2014
comment
Спасибо еще раз! Это был не хост, а гостевая машина, которая не прослушивала порт 80. Просто нужно было использовать sudo при запуске сервера узла. - person Shaun Scovil; 16.05.2014