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 【问题描述】:所以我有一个通过npm
在http-server
上运行的Web 应用程序。在我的package.json
file 中,我有"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 启动,但无法从浏览器访问?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 80端口无法使用-非root用户无法使用1024以下端口