7

所以我有一个在http-servervia上运行的 Web 应用程序npm。在我的package.json文件中,我有行"start": "sudo http-server -a [my ip address] -p 8065 -c-1",当我转到 时,我的应用程序运行良好http://myipaddress:8065。但是,如果我将 8065 更改为 80,在 json 文件中(这是我想要的),我仍然会收到成功消息:

Starting up http-server, serving ./
Available on:
http://myipaddress:80

但是当我转到链接时,chrome 给了我一个 ERR_CONNECTION_REFUSED。有人知道发生了什么吗?

4

5 回答 5

4

我建议这里有三个可能的问题。

  1. 端口 80 已在使用中。
  2. 您没有以 root 身份运行应用程序(如果您不是 root,则无法绑定到端口 <1024)
  3. http-server 没有正确绑定

要检查端口 80 是否已在使用中,请尝试

netstat -lntu | grep :80

如果端口 80 已在使用中,您应该会看到类似

tcp6       0      0 :::80                 :::*                    LISTEN

您将需要关闭端口 80 上运行的所有内容(apache?nginx?)


要检查您是否真的可以绑定到端口 80,请尝试从控制台运行 http-server 而不是通过 npm 即

sudo http-server -a [my ip address] -p 80 -c-1

如果上述方法有效,您应该能够以 root 身份运行 npm 来启动您的 http-server,即

sudo npm start

您可能需要从 package.json 中删除 sudo:

"start": "http-server -a [my ip address] -p 8065 -c-1"

我们需要确保 http-server 在您的系统上正常工作。我们将使用基于控制台的 Web 浏览器 w3m 对其进行测试。

sudo apt-get install w3m如果您还没有w3m,您可能需要安装它。

  1. 创建一个新目录。mkdir /tmp/testing
  2. CD 进入新目录cd /tmp/testing
  3. 使用 `http-server 启动 http-server。-a 本地主机 -p 1234
  4. 使用 w3m访问http://localhost:1234w3m http://localhost:1234/
  5. 使用 `http-server 启动 http-server。-a 本地主机 -p 80
  6. 在 w3m中访问http://localhostw3m http://localhost/是否有效?
于 2016-03-11T14:21:46.160 回答
0

快速测试:

尝试以 localhost 地址(localhost 或 127.0.0.1)访问它,以快捷方式访问任何潜在的防火墙。

尝试在端口 80 上 telnet 到该地址以查看服务器回复的内容(如果有)。

于 2016-03-11T14:07:03.470 回答
0

你有安装 Apache 吗?确定将您的应用程序服务器放在端口 80 上不会与 Apache 冲突吗?

在这种情况下,最好将端口 80 重定向到刚刚在 Apache 端口上启动它的应用程序服务器。

于 2016-03-11T14:16:39.210 回答
0

是错误102吗?检查此链接。可能是您安装的某些扩展程序引起的。

于 2016-03-11T15:55:51.253 回答
-1

要运行 pot 小于 1000 的 nodejs 应用程序,您需要 root 访问权限。使用 sudo node app.js 也不要忘记打开防火墙。并确保没有其他人在端口 80 上监听。

于 2016-03-11T14:15:14.143 回答