EC2实例的端口80上的IIS /节点服务器问题

时间:2016-01-12 21:15:12

标签: node.js amazon-web-services express amazon-ec2 aws-ec2

服务器配置完成后,我的EC2实例中的端口80上有一台IIS服务器。我可以通过我的弹性IP访问它。 但我关闭了希望在端口80上启动节点服务器的IIS服务器。

现在,两个都不起作用!!我的节点应用程序侦听端口80,但无法使用弹性IP从外部访问。 我试图在IIS管理器中启动IIS服务器,看起来它打开了。但它不能在实例中使用(使用私有IP)或从外部访问。

我该怎么做才能修复它?

由于

Server.js

/*******************************************************************************************/
/*CREATE AND START SERVER*/
/*******************************************************************************************/
var fs = require('fs');
var html = fs.readFileSync('./public/index.html');
var server=http.createServer(function(req,res){

    //res.write(html); // load the single view file (angular will handle the page changes on the front-end)
    //res.end();
    // application -------------------------------------------------------------
    app.get('*', function(req, res) {
        res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end)
    });

});

server.listen(80,'localhost');

2 个答案:

答案 0 :(得分:1)

我建议使用相同的密钥对和安全组启动新实例。然后在新实例上移动弹性IP。

启动Node JS 假设AWS Linux AMI

sudo yum update
sudo yum upgrade
sudo yum install gcc
yum groupinstall "Development tools"
wget -c https://nodejs.org/dist/v5.2.0/node-v5.2.0.tar.gz
#This is to download the source code.
tar -xzf node-v$ver.tar.gz
cd node-v$ver
./configure && make && sudo make install

然后你的 app.js

var port = process.env.PORT || 80,
    http = require('http'),
    fs = require('fs'),
    html = fs.readFileSync('index.html');
var index = require('./index');

var server = http.createServer(function (req, res) {
    console.log(req.method + "sdf " + req.url + res);
    if (req.method === 'POST') {
        var body = '';

        req.on('data', function(chunk) {
            body += chunk;
        });

        req.on('end', function () {
            res.writeHead(200, 'OK', {'Content-Type': 'text/plain'});
            res.write (html);
            res.end();
        });
    } else {
        res.writeHead(200);
        res.write(html);
        res.end();
    }
});

server.listen(port);
console.log('Server running at http://127.0.0.1:' + port + '/');

您的 index.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <p>Hello</p>
    </body>
</html>

这只是一个非常简单的Node JS实例

对于更强大的设置,我建议去EBS并启动其中一个样本。这更容易。

希望这有帮助

更新

问题:用户尝试在端口80上创建http服务器侦听并且运行快速格式

解决方案:使用 http收听端口或express - 两者同时不允许程序运行

答案 1 :(得分:0)

您仍然遇到与the comments here中描述的问题相同的问题。

当你这样做时:

server.listen(80,'localhost')

您告诉服务器从 localhost中侦听 请求,这意味着您明确忽略了所有外部请求。只需删除该参数即可收听来自所有地址的请求:

server.listen(80)