4

这段时间我阅读的内容比以往任何时候都多,这将是我的第一个网页,所以我决定安装在 nodejs 上。我非常快速地制作应用程序并在 localhost:9000 中进行测试

所以我想在 VPS 上运行更多应用程序,我搜索信息,我有两个选择

首先使用 nginx 代理应用程序...

upstream example1.com {
    server 127.0.0.1:3000;
}

server {
listen   80;
server_name  www.example1.com;
rewrite ^/(.*) http://example1.com/$1 permanent;
}

# the nginx server instance
server {
    listen 80;
    server_name example1.com;
    access_log /var/log/nginx/example1.com/access.log;

    # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
    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://example1.com;
      proxy_redirect off;
    }
 }

我不理解这个配置文件,因为我从不使用 nginx,所以我搜索了第二个选项

使用来自 expressjs() 的虚拟主机

express()
.use(express.vhost('m.mysite.com', require('/path/to/m').app))
.use(express.vhost('sync.mysite.com', require('/path/to/sync').app))
.listen(80)

我正在使用 expressjs,并且我了解如何配置,但是有一些关于 wich 是最佳选择的问题,因为使用 express() 我有一个应用程序管理多个应用程序,所以我认为这不是一个好的做法并且浪费资源。

这篇文章中,大卫埃利斯说

如果你不需要使用 WebSockets(或者任何 HTTP 1.1 特性,真的),你可以使用 NginX 作为你的代理。

优点是 NginX 可以处理的总负载与 Node 相比更高(基本上是静态编译和专门用于此类事情的),但是您失去了流式传输任何数据的能力(一次发送较小的块)。

对于较小的站点,或者如果您不确定将来需要哪些功能,最好坚持使用 node-http-proxy 并且仅在您可以证明代理是服务器上的瓶颈时才切换到 NginX。幸运的是,如果您以后确实需要 NginX,设置起来并不难。

这篇文章中,我阅读了一个使用许多应用程序配置 xginx 的示例,但我不明白如何为我使用它

upstream example1.com {
    server 127.0.0.1:3000;
}

server {
listen   80;
server_name  www.example1.com;
rewrite ^/(.*) http://example1.com/$1 permanent;
}

# the nginx server instance
server {
    listen 80;
    server_name example1.com;
    access_log /var/log/nginx/example1.com/access.log;

    # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
    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://example1.com;
      proxy_redirect off;
    }
 }

upstream example2.com {
    server 127.0.0.1:1111;
}

server {
listen   80;
server_name  www.example2.com;
rewrite ^/(.*) http://example2.com/$1 permanent;
}

# the nginx server instance
server {
    listen 80;
    server_name example2.com;
    access_log /var/log/nginx/example2.com/access.log;

    # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
    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://example2.com;
      proxy_redirect off;
    }
 }

所以问题是最好的选择,使用 nginx 还是使用 vhost ???

如果我必须使用 nginx,有任何教程如何配置 nginx 以在节点 js 上服务许多应用程序???

全部

4

1 回答 1

3

您的 Nginx 配置示例似乎是您正在寻找的。你应该在 /etc/nginx/sites-available 下创建你的配置文件,然后为那些你想要启用到 /etc/nginx/sites-enabled 的人创建一个符号链接

也许这会对你有所帮助 - http://blog.dealspotapp.com/post/40184153657/node-js-production-deployment-with-nginx-varnish

于 2013-02-09T23:01:44.710 回答