0

在 Amazon EC2 上运行。代码是由 express-generator 自动创建的。

要启动应用程序,我必须这样做:

sudo PORT=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.get('port'));

现在我可以通过说来启动应用程序:

须藤 npm 开始

但它说 - Express 服务器正在侦听端口 3000。我可以从浏览器访问它,但为什么是 3000

http://pastebin.com/bwcBHZaa

包.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"
  }
}
4

1 回答 1

0

我只是有一个闪念。几年前,同样的事情也发生在我身上。

问题是,绑定到 80 端口非常复杂。

这两种解决方案中的任何一种都可以,但为了简单起见,我推荐第一种。

  1. Nginx

您可以使用非常简单的 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;
        }

}
  1. 或者,您可以使用 IpTables NAT 重新路由:

https://glassonionblog.wordpress.com/2011/04/08/tomcat-redirecting-traffic-from-port-8080-to-80-using-iptables/


我发现使用 nginx 通常效果更好,原因有很多(例如,如果您重新启动服务器)。重新启动服务器意味着您必须在重新启动时重新加载 ipTables。如果您想自动执行此操作,则意味着您必须安装 iptables-restore。但是使用 NAT 重新路由表进行配置很尴尬。

使用 nginx 简单直接。

于 2015-12-29T01:55:04.657 回答