所以我有一个 Web 应用程序通过 npm
在 http-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。有人知道这是怎么回事吗?
最佳答案
我认为这里可能存在三个问题。
- 端口 80 已被使用。
- 您没有以 root 用户身份运行应用程序(如果您不是 root 用户,则无法绑定(bind)到端口 <1024)
- 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
安装它。
- 创建一个新目录。
mkdir/tmp/testing
- CD 进入新目录
cd/tmp/testing
- 使用 `http-server 启动 http-server。 -a localhost -p 1234
- 访问http://localhost:1234使用 w3m
w3m http://localhost:1234/
- 使用 `http-server 启动 http-server。 -a 本地主机 -p 80
- 访问http://localhost在 w3m
w3m http://localhost/
中它有效吗?
关于node.js - Ubuntu:端口 80 上的 Http-server 正在启动,但无法从浏览器访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942159/