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

Posted

技术标签:

【中文标题】Ubuntu:端口 80 上的 Http-server 启动,但无法从浏览器访问?【英文标题】:Ubuntu: Http-server on port 80 starting up, but can't access from browser? 【发布时间】:2016-06-26 19:30:19 【问题描述】:

所以我有一个通过npmhttp-server 上运行的Web 应用程序。在我的package.jsonfile 中,我有"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 端口已在使用中。 您没有以 root 身份运行应用程序(如果您不是 root,则无法绑定到端口 http-server 绑定不正确

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

netstat -lntu | grep :80

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

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

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


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

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 对其进行测试。

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

    创建一个新目录。 mkdir /tmp/testing CD 进入新目录cd /tmp/testing 使用 `http-server 启动 http-server。 -a 本地主机 -p 1234 访问http://localhost:1234 与 w3m w3m http://localhost:1234/ 使用 `http-server 启动 http-server。 -a 本地主机 -p 80 在 w3m 中访问 http://localhost w3m http://localhost/ 是否有效?

【讨论】:

netstat -lntu | grep :80 尝试后,我得到:tcp 0 0 myipaddress 0.0.0.0:* LISTEN 我尝试了sudo http-server -a [my ip address] -p 80 -c-1,就像npm start 一样,它说连接可用。但是,当我使用浏览器访问该地址时,它显示 ERR_CONNECTION_REFUSED。最后,从 json 包中删除 sudo 会在控制台中出现 EACCESS 错误。 端口 80 上已经有东西在运行,您需要关闭它。可能是另一个 Web 服务器,例如 apache。尝试 sudo /etc/init.d/apache2 stop 然后尝试再次运行您的应用程序。 抱歉,在 80 端口上运行的只有我的应用程序。 你在用socket.io吗? 不,我没有使用 socket.io【参考方案2】:

快速测试:

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

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

【讨论】:

如何远程登录80端口的地址? $telnet 127.0.0.1 80 或者基本上,运行命令 telnet(你不需要是 root 来执行此操作),第一个参数是你的地址,第二个参数是端口。 telnet: could not resolve 127.0.0.1:80/telnet: Name or service not known nvm 我有冒号。没有冒号,连接成功【参考方案3】:

您安装了 Apache 吗?确定将应用服务器放在 80 端口不会与 Apache 冲突吗?

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

我连接到 80 端口,没问题。我只是无法从浏览器访问它。

以上是关于Ubuntu:端口 80 上的 Http-server 启动,但无法从浏览器访问?的主要内容,如果未能解决你的问题,请参考以下文章

tomcat在ubuntu14下使用80端口

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

ubuntu下Tomcat绑定80端口

Apache/xampp 无法在 ubuntu 端口 80 上运行

ubuntu下Tomcat绑定80端口

Tomcat7 绑定到端口 80 在 Ubuntu 14.04LTS 中失败