为什么 Node.js 简单的 http 服务器应用程序无法在服务器上运行?

Why is Node.js simple http server app not working on server?

我正在学习如何在服务器(不是我的本地计算机)中使用 Node.js 应用程序。在这种情况下,我正在关注 this tutorial 以创建一个简单的 Web 服务器。

我已经安装了 Node.js,并通过 CLI 进行了测试,它可以工作。我可以 运行 javascript 代码,在 CLI 中生成输出等。但是我无法通过 URL 使应用程序工作 使用浏览器。

我的app文件夹结构很简单:

index.js
package.json
package-lock.json

这是我目前在 index.js:

中使用的代码
var http = require('http'); // 1 - Import Node.js core module

var server = http.createServer(function (req, res) {   // 2 - creating server

    if (req.url == '/') { //check the URL of the current request
        
            // set response header
            res.writeHead(200, { 'Content-Type': 'text/html' }); 
        
            // set response content    
            res.write('<html><body><p>This is home Page.</p></body></html>');
            res.end();
    
        }
        else if (req.url == "/student") {
        
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.write('<html><body><p>This is student Page.</p></body></html>');
            res.end();
    
        }
        else if (req.url == "/admin") {
        
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.write('<html><body><p>This is admin Page.</p></body></html>');
            res.end();
    
        }
        else
            res.end('Invalid Request!');
    

});

server.listen(5000); //3 - listen for any incoming requests

console.log('Node.js web server at port 5000 is running..')

如果我通过 CLI 进入应用的文件夹和 运行 应用(节点 index.js) ,我可以看到预期的 console.log() 输出(Node.js 端口 5000 的 Web 服务器是 运行ning..)。但是,如果我转到 URL 指向那个文件夹,我希望输出 <html><body><p>This is home Page.</p></body></html>,它不起作用(见下文了解我的内容得到)。

我有一个域 (http://example.com),其文档根目录位于应用程序的文件夹中。这是我尝试过的:

None 给出了我期望的响应。我不知道这是否是我的文件结构、我的服务器配置的问题……但我一直在四处寻找,我不明白为什么这个基本示例在我的情况下不起作用,显然我是遗漏了什么。任何帮助将不胜感激!

编辑: 我尝试 运行 这个应用程序的服务器是一台装有 CentOS 7 的 LAMP 机器。

我检查了我的服务器(Nginx),你的代码工作正常。

看了@MinusFour 的评论后,我怀疑你没有在服务器的安全组中打开 5000 端口。

安全组就像

如果这不起作用,您还可以检查服务器的防火墙设置。

至于你的域名表达:

可以参考https://support.google.com/gsa/answer/6329145?hl=en


我没有 50+ 的评论评论所以我必须在这里回答。