2016-02-22 15 views
6

İnternet için şu an için iyi bir çözüm bulmaya çalışıyorum bir hafta boyunca araştırıyorum. İlk önce http-master hakkında okudum ama yükleme konusunda sorunlar yaşıyorum. Sonra özellikleri ve yapılandırma kolaylığı olmayan birkaç tane daha gördüm. Ya da cevaplar güncel değildiNodeJS birden çok web sitesi

Şu anda NodeJS'de web sitesi geliştirmek istiyoruz, şu anda test/dev ve üretim için üç, iki tane var. Bunların her biri aynı sunucuda, şu anda aynı alan adıyla fakat farklı bağlantı noktalarına sahip bir Apache sunucusunda barındırılıyor. Farklı bir alan adıyla da çalıştığımız başka bir web sitemiz var.

Soru, tüm siteleri ve daha fazlasını sunmak için NodeJS'yi kullanmanın en iyi yolu nedir? Gelecekte tüm uygulamaları NodeJS'de geliştirmek istiyoruz.

Sunucu Özellikleri: Windows Server 2012 birden çok etki barındırma R2 İki çekirdek 4 GB RAM

+0

Düğümün çalıştığı bağlantı noktalarını atamak için VirtualHost tanımları ve mod_proxy yönergelerine bakıyorum, ancak bu LAMBA ortamında. Windows hakkında emin değilim ... – Bosworth99

+0

Olası çoğaltılabilir [Birden çok Node.js sitesini farklı etki alanlarıyla aynı IP/sunucuda nasıl barındırabilirim?] (Http://stackoverflow.com/questions/19254583/how-do-i Node.js. kullanarak birden fazla site stratejisi için bazı harika cevapları olan -host-multiple-node-js-site-on-the-aynı-ip-sunucu-ile-farklı-etki alanı). –

+0

@DigitalSea bu bir yakın, ancak sunucum şu anda Windows ve Apache'yi çalıştırıyor. Zaten sahip olduğum şeyi kullanmak güzel olurdu. Kabul edilen cevap, bunun nasıl gerçekleştirileceğine dair örnekler verdi. –

cevap

7

çok etkilidir. Ancak aynı zamanda apache ile elde edilebilir. Temelde

sadece her koşmak Farklı bir bağlantı noktası altında uygulama ve istekleri üzerinde etki alanı adı proxy'sine dayalı. İşte n kullanarak bir örnek kurulum ginx.

## 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; 
    } 
} 

Aşağıdaki apache örneği çalışmalıdır.

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    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 [email protected] 
    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> 
+0

Apache için bir örneğiniz var mı? –

+0

@BrandonWilson, apache'yi de kullanarak örnek ekledi. Bunun senin için işe yarayıp yaramadığını görün. –

+0

harika bir çalışma efendim, şu anki Apache kurulumunda çalışmayı başarabildim, teşekkürler. –

0

Tercih ettiğim yol her zaman farklı alan adları eşleşmesini sağlar Express ile vhost kullanmak olmuştur. Bu sunucuya işaret eden birden fazla etki alma güçlük üzerinden gitmek istemiyorsanız

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)) 

, ben bir birincil adı (örn foo1.bar.com, foo2.bar.com üzerinde birden çok alt etki alanları kullanarak ve DNS CNAME kaydı kullanılarak bulmak söz konusu alt alanlardan gelin yapılandırma çok basit olduğu için nginx iyi bir seçimdir. bir ters proxy kullanmak istiyorum.