【问题标题】:Http-server nodejs running but not workingHttp-server nodejs 运行但不工作
【发布时间】:2016-05-09 18:14:47
【问题描述】:

我正在尝试为 nodejs 运行 http-server。

使用npm start 后,服务器在给定端口(8000)上完美启动,并出现一些可忽略的错误。但是当我尝试运行应用程序 url 时,它显示“网页不可用”。 当我尝试ping IP 时,它通过完美发送数据包来响应。

当我运行 http-server 命令时,它显示它正在 127.0.0.1:8080 和 172.31.46.121:8080 上运行。我尝试将localhost端口更改为8080,但结果没有差异。

我正在使用putty客户端在windows上运行linux。

nodejs版本-5.4.1

npm 版本-3.7.0

请帮忙..

还有一件事..

我在端口 80 的 putty 上运行此服务器。然后在服务器仍在运行的情况下,我尝试使用 Bitnami 客户端(即使用 npm start)在同一端口(80)运行相同的 nodejs 服务器,并且 有没有端口冲突。当我通过 Bitnami 客户端运行应用程序时,即使应用程序在该端口上运行良好。

http-服务器文件代码-

` #!/usr/bin/env node

var colors = require('colors'),
httpServer = require('../lib/http-server'),
argv = require('optimist').argv,
portfinder = require('portfinder'),
opener = require('opener');

if (argv.h || argv.help) {
console.log([
"usage: http-server [path] [options]",
"",
"options:",
"  -p                 Port to use [8080]",
"  -a                 Address to use [0.0.0.0]",
"  -d                 Show directory listings [true]",
"  -i                 Display autoIndex [true]",
"  -e --ext           Default file extension if none supplied [none]",
"  -s --silent        Suppress log messages from output",
"  --cors             Enable CORS via the 'Access-Control-Allow-Origin'       header",
"  -o                 Open browser window after staring the server",
"  -c                 Set cache time (in seconds). e.g. -c10 for 10 seconds.",
"                     To disable caching, use -c-1.",
"  -h --help          Print this list and exit."
 ].join('\n'));
process.exit();
}

var port = argv.p || parseInt(process.env.PORT, 10),
host = argv.a || '0.0.0.0',
log = (argv.s || argv.silent) ? (function () {}) : console.log,
requestLogger;

if (!argv.s && !argv.silent) {
requestLogger = function(req) {
log('[%s] "%s %s" "%s"', (new Date).toUTCString(), req.method.cyan,     req.url.cyan, req.headers['user-agent']);
}
}
if (!port) {
portfinder.basePort = 8080;
portfinder.getPort(function (err, port) {
if (err) throw err;
listen(port);
});
} else {
listen(port);
}

function listen(port) {
var options = {
root: argv._[0],
cache: argv.c,
showDir: argv.d,
autoIndex: argv.i,
ext: argv.e || argv.ext,
logFn: requestLogger
};

if (argv.cors) {
options.headers = { 'Access-Control-Allow-Origin': '*' };
}

var server = httpServer.createServer(options);
server.listen(port, host, function() {
log('Starting up http-server, serving '.yellow
  + server.root.cyan
  + ' on port: '.yellow
  + port.toString().cyan);
 log('Hit CTRL-C to stop the server');

if (argv.o) {
  opener('http://127.0.0.1:' + port.toString());
}
});
}

if (process.platform !== 'win32') {
//
// Signal handlers don't work on Windows.
//
process.on('SIGINT', function () {
log('http-server stopped.'.red);
process.exit();
});
}

`

【问题讨论】:

  • 您可以粘贴您的服务器代码/app.js 代码吗?你在使用 Node.js Express 吗?
  • @AlexMills:不,我没有使用 Express。只是 Node.js
  • 防火墙是否会阻止对您端口的请求,而不是 80?
  • 没有@Sridhar。防火墙什么也没做。端口可以​​免费使用。
  • 在这种情况下,什么是“应用程序 url”?可能会错过在主机文件中为域创建条目?

标签: node.js httpserver


【解决方案1】:

请提供一些代码, 出于纯粹的猜测,绑定IP可能存在问题,即。您可能将您的服务器 IP 地址绑定到 127.0.0.1 只能从 locahost 访问,将其更改为 0.0.0.0 以允许从外部访问。

var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, {
          'content-type': 'text/plain'
});
res.end('It works');
}).listen(3000, '0.0.0.0');

【讨论】:

  • 你能告诉我你需要哪个代码来检查问题吗?
  • 只是绑定ip和端口的部分
  • 如您所见,我已将服务器绑定到 0.0.0.0 而不是 127.0.0.1
  • 可能性很小 1) 您的服务器实际上并未监听 8080 或 2) 您的防火墙阻止了外部访问端口。尝试以下命令:netstat -tupln | grep 8080 ,如果你得到一个输出,那么你的服务器很好,问题可能是由于防火墙
  • 你也可以使用 telnet 8080 从客户端远程登录,看看你是否连接
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 2018-07-24
  • 2012-03-20
  • 2015-09-12
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
相关资源
最近更新 更多