【问题标题】:Unable to connect to Vagrant (ubuntu/trusty64) from host machine via port forwarding无法通过端口转发从主机连接到 Vagrant (ubuntu/trusty64)
【发布时间】:2014-05-15 04:12:33
【问题描述】:

我已经设置了一个带有 Ubuntu 14.04、node.js、npm、mongodb、forever、deployd 和 express 的 Vagrant 盒子。我将主机端口 8080 转发到来宾端口 80,并在来宾计算机中设置节点服务器侦听端口 80。

当我在浏览器中访问http://localhost:8080 时,我希望看到来自我的节点服务器的输出(“Hello World”),但我却没有得到浏览器的响应。

在来宾机器内部,当我尝试 curl 时,我得到 curl: (7) Failed to connect to localhost port 80: Connection refused

从主机上,当我尝试 curl 时,我得到 curl: (52) Empty reply from server

我尝试通过使用sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 修改iptables 来允许所有传入的网络流量,并保存了这些设置并使用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);

我在这里缺少什么?提前谢谢...

【问题讨论】:

  • 你确定盒子正在监听 8080 端口吗?网络统计-ntlp | grep 8080
  • @Tiago 是的,我的主机正在侦听端口 8080。但是,尽管我的节点服务器告诉它,我的客户机(Vagrant box)NOT 正在侦听端口 80这样做。问题是我没有使用sudo 运行节点服务器! facepalm 你的建议帮助我解决了这个问题,所以如果你想回答我会接受的。谢谢!
  • 我很高兴它有帮助。我刚刚创建了一个答案。欢呼

标签: linux node.js ubuntu vagrant iptables


【解决方案1】:

检查您的主机是否正在侦听端口 8080:

$netstat -ntlp | grep 8080

【讨论】:

  • 再次感谢!不是主机,而是来宾机器没有监听端口 80。运行节点服务器时只需要使用sudo
猜你喜欢
  • 2015-05-03
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 2018-07-06
  • 1970-01-01
  • 2014-06-23
相关资源
最近更新 更多