【问题标题】:My web application does not work when trying to access it by the domain name, but it works if I use the server's IP followed by a port我的 Web 应用程序在尝试通过域名访问它时不起作用,但如果我使用服务器的 IP 后跟端口,它就可以工作
【发布时间】:2020-03-25 03:37:51
【问题描述】:

免责声明:这是我第一次同时使用 node.js、Web 服务器和 Web 应用程序。

大家好,

我已将我的第一个 node.js 应用程序上传到我的 DigitalOcean droplet (vps)。使用 Putty 我设法访问了我的服务器,并使用终端下载了NPMNodeMongoDBPython,最后是Nodemon

我使用npm 安装了所有依赖项,并且能够使用“nodemon app.js”启动我的服务器。然后,我使用 DigitalOcean 为我的服务器提供的 IP 地址成功连接到我的 Web 应用程序。

但是,url 自动填充 IP 以将 :3000 作为端口,例如:http://123.45.678.999:3000。然后,我从 GoDaddy 购买了一个域名,并将域名服务器设置为 ns1.digitalocean.comns2.digitalocean.comns3.digitalocean.com。在数字海洋上,我配置了网络/DNS 设置以将我的新域名链接到我的服务器的 IP。

但是,当我导航到我的域名时,我的网页只会显示:

此页面不工作,域未发送任何数据,ERR_EMPTY_RESPONSE。

我仍然可以使用 ip:port 连接到我的网络应用程序。

我在这里遗漏了什么吗?我看到的每个指南/教程,人们只能使用 IP 进行连接,为什么我的需要一个端口?任何想法为什么域不起作用?任何帮助将不胜感激...

提前致谢!

【问题讨论】:

    标签: node.js mongodb web-applications server digital-ocean


    【解决方案1】:

    当您在浏览器中输入一个没有任何端口的 IP 时,如果您使用 http,它会假定您输入了 80 端口。所以当浏览器中没有明确写入端口时,就使用80端口。我认为您应该尝试在端口 80 上运行您的节点应用程序(可能来自 root 用户)。

    【讨论】:

    • 谢谢,这解决了我的问题!我试图支持你的回答,但它说我没有足够的声誉......对不起!
    • 我猜你可以接受这个答案是正确的。很高兴您的问题得到解决:)
    • 我输入了 ip:port 但服务器没有响应
    【解决方案2】:

    建议为你的nodejs应用使用像nginx这样的反向代理:

    https://medium.com/intrinsic/why-should-i-use-a-reverse-proxy-if-node-js-is-production-ready-5a079408b2ca

    这也将使之后使用letsencrypt设置https更容易: https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx

    【讨论】:

    • 谢谢!我也会调查一下。
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多