gpt4 book ai didi

node.js - 如何不使用localhost,而是使用服务器的IP?

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:50 25 4
gpt4 key购买 nike

我在this tutorial上找到了这个 Node 应用程序并想使用它,但它被配置为作为本地主机运行。由于该应用程序在 Amazon Linux EC2 上运行,因此无法通过桌面(本地)访问它(也许需要安装软件来启用桌面模式,但我还没有)。

我想在服务器上运行应用程序,而不是在本地主机上,而是在服务器的弹性 IP 地址上运行,我将把该地址添加到我的域 chatxs.com 的托管区域中。

我想让应用程序监听此 IP 中的任何请求,该 IP 同样位于域名的 DNS 中。

这是教程附带的代码,我唯一更改的是 View 文件夹中的 .html 文件(样式、对齐和一些文本,应用程序没有代码更改,只是 html):

app.js

// This is the main file of our chat app. It initializes a new 
// express.js instance, requires the config and routes files
// and listens on a port. Start the application by running
// 'node app.js' in your terminal

var express = require('express'),
app = express();

// This is needed if the app is run on heroku:

var port = process.env.PORT || 8080;

// Initialize a new socket.io object. It is bound to
// the express app, which allows them to coexist.

var io = require('socket.io').listen(app.listen(port));
// Require the configuration and the routes files, and pass
// the app and io as arguments to the returned functions.

require('./config')(app, io);
require('./routes')(app, io);

console.log('Your application is running on http://localhost:' + port);

config.js

// This file handles the configuration of the app.
// It is required by app.js

var express = require('express');

module.exports = function(app, io){

// Set .html as the default template extension
app.set('view engine', 'html');

// Initialize the ejs template engine
app.engine('html', require('ejs').renderFile);

// Tell express where it can find the templates
app.set('views', __dirname + '/views');

// Make the files in the public folder available to the world
app.use(express.static(__dirname + '/public'));

};

routes.js它太大了,无法在此处格式化。

最后

package.json

{
"name": "NodeChatSystem",
"version": "0.0.1",
"description": "Realtime chat system for Tutorialzine.com",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"node",
"chat",
"system"
],
"author": "Nikolay Anastasov",
"license": "MIT",
"dependencies": {
"ejs": "^1.0.0",
"express": "^4.8.2",
"gravatar": "~1.0.6",
"socket.io": "^1.0.6"
}
}

以上基本上是教程 .zip 文件中包含的内容。

最佳答案

当您仅使用app.listen(port)时,它将仅允许来自本地主机的连接(如您所见)。

要允许外部连接,请使用app.listen(port, "0.0.0.0")。这告诉 Node 监听外部网络接口(interface)。

此外,请确保您的 EC2 实例的安全组允许适当端口上的传入连接。

更新:

正如jfriend00所指出的,并进一步调查,这是不正确的。

引用号:http://expressjs.com/api.html#app.listen

关于node.js - 如何不使用localhost,而是使用服务器的IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com