首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS多网站

问NodeJS多网站
EN

Stack Overflow用户
提问于 2016-02-22 23:41:56
回答 2查看 2.7K关注 0票数 8

我已经在互联网上搜索了一个星期,试图找到一个很好的解决方案。首先,我读到了有关http-master的文章,但我在安装它时遇到了问题。然后,我看到了其他几个没有这些特性和配置的易用性。或者答案都过时了

我们希望在NodeJS中开发网站,目前有三个,两个用于测试/开发,一个用于生产。每个服务器都托管在同一个服务器上,目前是一个具有相同域名但端口不同的Apache服务器。我们有另一个网站,我们的工作,以及一个不同的域名。

问题是,使用NodeJS为所有站点以及更多站点服务的最佳方式是什么?展望未来,我们希望开发NodeJS中的所有应用程序。

服务器规格: Windows 2012 R2双核4GB内存

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-23 00:03:46

您想要使用反向代理。nginx是个不错的选择,因为配置非常简单。但在apache中也可以实现同样的目标。

基本上,您只是在不同的端口下运行每个应用程序,并且基于请求的域名代理。下面是一个使用nginx的示例设置。

代码语言:javascript
复制
## Upstream www.example.com ##
upstream examplelive  {
      server 8081; # nodejs server running on port 8081
}

## Upstream dev.example.com ##
upstream exampledev  {
      server 8082; # nodejs server running on port 8082
}

## www.example.com ##
server {
    listen       80;
    server_name  www.example.com;

    access_log  /var/log/nginx/log/www.example.access.log  main;
    error_log  /var/log/nginx/log/www.example.error.log;

    ## send request back to examplelive ##
    location / {
     proxy_pass  http://examplelive;
     proxy_set_header        Host            $host;
     proxy_set_header        X-Real-IP       $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}


## dev.example.com ##
server {
   listen      80;
   server_name dev.example.com;

   access_log  /var/log/nginx/log/dev.example.com.access.log  main;
   error_log   /var/log/nginx/log/dev.example.com.error.log;

   location / {
        proxy_pass  http://exampledev;
        proxy_set_header        Host            static.example.com;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

下面的apache示例应该可以工作。

代码语言:javascript
复制
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName www.example.com

    ProxyRequests off

    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    <Location />
            ProxyPass http://localhost:8081/
            ProxyPassReverse http://localhost:8081/
    </Location>

</VirtualHost>
<VirtualHost *:80>
    ServerAdmin admin@dev.example.com
    ServerName  dev.example.com    

    ProxyRequests off

    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    <Location />
            ProxyPass http://localhost:8082/
            ProxyPassReverse http://localhost:8082/
    </Location>

</VirtualHost>
票数 10
EN

Stack Overflow用户

发布于 2016-02-22 23:48:37

我最喜欢的托管多个域的方法一直是将vhost与Express结合使用,它允许您匹配不同的域名。

代码语言:javascript
复制
var mailapp = connect()
var staticapp = connect()

// create main app
var app = connect()

// add vhost routing to main app for mail
app.use(vhost('mail.example.com', mailapp))
app.use(vhost('assets-*.example.com', staticapp))

如果您不想处理获取指向此服务器的多个域的麻烦,我发现在一个主名称上使用多个子域(例如,foo1.bar.com, foo2.bar.com和使用CNAME记录和DNS来指向这些子域)是非常有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35566129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档