node.js - Ubuntu:端口 80 上的 Http-server 正在启动,但无法从浏览器访问?

标签 node.js ubuntu npm httpserver port80

所以我有一个 Web 应用程序通过 npmhttp-server 上运行。在我的 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。有人知道这是怎么回事吗?

最佳答案

我认为这里可能存在三个问题。

  1. 端口 80 已被使用。
  2. 您没有以 root 用户身份运行应用程序(如果您不是 root 用户,则无法绑定(bind)到端口 <1024)
  3. http 服务器未正确绑定(bind)

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

netstat -lntu | grep :80

如果端口 80 已被使用,您应该会看到类似的内容

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

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


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

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

如果上述方法有效,你应该能够以 root 身份运行 npm 来启动你的 http 服务器,即

sudo npm start

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

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

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

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

  1. 创建一个新目录。 mkdir/tmp/testing
  2. CD 进入新目录 cd/tmp/testing
  3. 使用 `http-server 启动 http-server。 -a localhost -p 1234
  4. 访问http://localhost:1234使用 w3m w3m http://localhost:1234/
  5. 使用 `http-server 启动 http-server。 -a 本地主机 -p 80
  6. 访问http://localhost在 w3m w3m http://localhost/ 中它有效吗?

关于node.js - Ubuntu:端口 80 上的 Http-server 正在启动,但无法从浏览器访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942159/

相关文章:

javascript - TypeError : Cannot read property 'get' of undefined. 是 npm 的问题吗?

node.js - 由于 header 中的内容长度而导致代码 400 错误请求

node.js - Node 本地依赖项安装为快捷方式并嵌套而不是平面

javascript - chessboardjs 的 Typescript 声明文件(隐式导入)

javascript - 使用 Node js 和 socket.io 不会在客户端上触发事件

javascript - nodemon 启动无限的 .node-xmlhttprequest-sync 文件

linux - docker运行命令错误

混帐 : Ubuntu: Url has no scheme

linux - 如何在Ubuntu 14.04中找回丢失的文件sources.list?

node.js - ZMQ安装失败