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

时间:2016-03-11 13:59:27

标签: node.js ubuntu npm httpserver port80

因此我通过http-servernpm上运行了一个Web应用程序。在我的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。有谁知道发生了什么?

5 个答案:

答案 0 :(得分:4)

我建议这里有三个可能的问题。

  1. 端口80已在使用中。
  2. 您没有以root身份运行应用程序(如果您不是root用户,则无法绑定到端口< 1024)
  3. http-server无法正确绑定
  4. 要检查端口80是否已被使用,请尝试

    netstat -lntu | grep :80
    

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

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

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

    要检查是否可以实际绑定到端口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在您的系统上正常运行。我们将使用w3m基于控制台的Web浏览器对其进行测试。

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

    1. 创建一个新目录。 mkdir /tmp/testing
    2. CD转入新目录cd /tmp/testing
    3. 使用`http-server启动http-server。 -a localhost -p 1234
    4. 使用w3m w3m http://localhost:1234/
    5. 访问http://localhost:1234
    6. 使用`http-server启动http-server。 -a localhost -p 80
    7. 访问w3m中的http://localhost w3m http://localhost/是否有效?

答案 1 :(得分:0)

快速测试:

尝试以localhost地址(localhost或127.0.0.1)访问此地址以快捷方式防火墙。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你安装了Apache吗?确保将应用程序服务器放在端口80上与Apache没有冲突吗?

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

答案 4 :(得分:0)

是错误102吗?检查此link。可能是您安装的某些扩展程序造成的。