【问题标题】:Ubuntu: Http-server on port 80 starting up, but can't access from browser?Ubuntu:端口 80 上的 Http-server 启动,但无法从浏览器访问?
【发布时间】: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。有人知道怎么回事吗?

【问题讨论】:

    标签: node.js ubuntu npm httpserver port80


    【解决方案1】:

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

    1. 80 端口已在使用中。
    2. 您没有以 root 身份运行应用程序(如果您不是 root,则无法绑定到端口
    3. 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

    1. 创建一个新目录。 mkdir /tmp/testing
    2. CD 进入新目录cd /tmp/testing
    3. 使用 `http-server 启动 http-server。 -a 本地主机 -p 1234
    4. 访问http://localhost:1234 与 w3m w3m http://localhost:1234/
    5. 使用 `http-server 启动 http-server。 -a 本地主机 -p 80
    6. 在 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 端口,没问题。我只是无法从浏览器访问它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2022-06-25
        • 2018-05-12
        • 2022-10-19
        • 2023-02-12
        • 2021-02-08
        相关资源
        最近更新 更多