繁体   English   中英

我的 Web 应用程序在尝试通过域名访问时不起作用,但如果我使用服务器的 IP 后跟一个端口,它就可以工作

[英]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

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

嘿大家,

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

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

但是,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 进行连接,为什么我的需要端口? 任何想法为什么域不起作用? 任何帮助将不胜感激...

提前致谢!

当您在没有任何端口的情况下在浏览器中输入 IP 时,如果您使用 http,则假定您输入了端口 80。 因此,当浏览器中未明确写入端口时,将使用端口 80。 我认为您应该尝试在端口 80(可能来自 root 用户)上运行您的节点应用程序。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM