Node.js 尽管将端口3000设置为80,Express仍在侦听它?
在AmazonEC2上运行。该代码是由express generator自动创建的 要启动应用程序,我必须执行以下操作: sudo端口=80 npm启动 然后我添加了第14行:Node.js 尽管将端口3000设置为80,Express仍在侦听它?,node.js,amazon-ec2,port,express-4,Node.js,Amazon Ec2,Port,Express 4,在AmazonEC2上运行。该代码是由express generator自动创建的 要启动应用程序,我必须执行以下操作: sudo端口=80 npm启动 然后我添加了第14行: app.set('port', process.env.PORT || 80); 和66 http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.
app.set('port', process.env.PORT || 80);
和66
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
现在,我可以通过以下方式启动应用程序:
sudo npm启动
但是它说-Express服务器监听端口3000。我可以通过浏览器访问它,但为什么
Package.json
{
"name": "haha",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.13.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"express-generator": "^4.13.1",
"jade": "~1.11.0",
"kerberos": "file:kerberos",
"mongodb": "^2.0.52",
"morgan": "~1.6.1",
"serve-favicon": "~2.3.0"
}
}
我只是有个闪现的想法。几年前,同样的事情也发生在我身上 问题是,绑定到端口80非常复杂 这两种解决方案中的任何一种都可以,但为了简单起见,我推荐第一种
#etc/nginx/sites-enabled/mysite.conf
server {
listen 0.0.0.0:80;
server_name www.mysite.com mysite.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我发现使用nginx通常效果更好,原因有很多(例如,如果重新启动服务器)。重新启动服务器意味着您必须在重新启动时重新加载ipTables。如果您想实现自动化,这意味着您必须安装iptables恢复。但是使用NAT重路由表进行配置很难
使用nginx非常简单。fyi,请确保将其转换为float。环境变量是字符串。例如,
app.set('port',编号(process.env.port)| 80)代码>谢谢,我这么做了,但还是说3000。检查你的package.json,可能有一个默认值覆盖了你的配置。在bin/www中,端口也可能被重新配置。package.json中没有任何内容,但你可能对bin/www的看法是正确的