在Amazon EC2上运行。代码是由快速生成器自动创建的。
要启动应用程序,我必须这样做:
sudo PORT = 80 npm start
然后我添加了第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.get('port'));
现在我可以通过说:
启动应用程序sudo npm start
但它说 - Express服务器在端口3000上侦听。我可以从我的浏览器访问它,但为什么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"
}
}
答案 0 :(得分:0)
我刚才有一个想法。多年前我也发生过同样的事情。
问题是,绑定到端口80非常复杂。
两种解决方案中的任何一种都可以使用,但为了简单起见,我建议使用第一种解决方案。
您可以使用非常简单的nginx配置来重新路由"端口3000请求到端口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-restore。但配置NAT重新路由表很尴尬。
使用nginx只是简单直接。