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

Ubuntu: Http-server on port 80 starting up, but can't access from browser?

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

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

但是当我去 link 时,chrome 给了我一个 ERR_CONNECTION_REFUSED。有人知道发生了什么事吗?

快速测试:

尝试以本地主机地址访问此地址,本地主机或 127.0.0.1 以快捷方式访问任何潜在的防火墙。

尝试在端口 80 上远程登录到此地址以查看服务器回复的内容(如果有)。

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

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

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

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

  1. 端口 80 已被使用。
  2. 您没有运行将应用程序设置为 root(如果您不是 root,则不能绑定到 <1024 端口)
  3. http 服务器未正确绑定

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

netstat -lntu | grep :80

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

的内容
tcp6       0      0 :::80                 :::*                    LISTEN

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


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

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

如果上述方法有效,您应该能够 运行 npm 以 root 身份启动您的 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 本地主机 -p 1234
  4. 使用 w3m w3m http://localhost:1234/
  5. 访问 http://localhost:1234
  6. 使用 `http-server 启动 http-server。 -a 本地主机 -p 80
  7. 在 w3m 中访问 http://localhost w3m http://localhost/ 它有效吗?

是错误102吗?检查此 link。可能是你安装了一些扩展引起的。