【问题标题】:Deploying a nodejs app with ExpressJS使用 ExpressJS 部署 nodejs 应用程序
【发布时间】:2015-01-28 16:37:54
【问题描述】:

所以我有一个 nodejs 应用程序在端口 8081 上运行:

http://mysite.com:8081/

我想通过 http://mysite.com/ 访问它,所以我用 expressjs 设置了一个虚拟主机:

app.use(express.vhost('yugentext.com', app));

这似乎太容易了,而且行不通。我是否对 expressjs 虚拟主机的工作方式感到困惑?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    如果您想通过 express 做好这些,问题出在您的 dns 设置,而不是 express 代码。

    A entry 添加到您的域,如下所示:

    127.0.0.1 localhost *.mysite.com *.www.mysite.com
    

    您应该等待 DNS 传播。 (从几秒到几小时)。

    如果 apache 或其他 web 服务器在端口 80 上运行任何 vhost,则会发生冲突。

    反之亦然:

    nodejs 和 express 与 apache 和 nginx(vhost/proxy 的东西)提供的性能相差甚远。

    Nginx>Apache(更适合 nodejs)

    创建一个从mysite.commysite.com:8080 的代理

    通过这些方式,n​​odejs 和 express 处理 ui、方法、httpserver 等,Nginx 或 Apache 代理、vhost 和管理您的静态资产非常快。

    在此处检查这些配置:Trouble with Nginx and Multiple Meteor/Nodejs Apps

    【讨论】:

    • 我还在这台服务器的 80 端口上运行 rails 应用程序,就速度而言,我最好的选择是什么?
    • 给你:USING NGINX TO AVOID NODE.JS LOAD。好文章。
    【解决方案2】:

    我认为你在做app.listen(8081)。你应该做app.listen(80)。我没有使用 express vhost 的经验,但对于这个简单的用例,您不需要它们。

    【讨论】:

      【解决方案3】:
      upstream node-apps {
        server host_ip_1:3000;
        server host_ip_2:3000;
      }
      
      server {
          listen 80;
      
          server_name localhost;
              location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://node-apps/;
                proxy_redirect off;
              }
      }
      

      这是我的 nginx 配置,代理通过多个服务器,祝你好运:p

      【讨论】:

        猜你喜欢
        • 2018-01-30
        • 2014-04-12
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多