2016-12-15 8 views
0

私は約50GBのメモリを持つUbuntu 14.04を実行しているLinuxボックスを持っています。1台のNginxリバースプロキシサーバを持つ複数のUnicorn App Serverを持つことは悪い習慣ですか?

私は5つまたは6つのRuby-on-Rails Webアプリケーションを持っていて、それぞれUnicorn Appサーバーを備えていて、すべてNginxリバースプロキシサーバーによってサービスされています。

各アプリはサブディレクトリでホストされています。 例:

  • www.webserver.com/app1
  • www.webserver.com/app2

各アプリは多分一日あたり50〜100個の要求を取得します。彼らは私の会社のビジネスプロセスを促進するための小さなアプリです。

私のnginxの設定ファイルは次のようになります

upstream app1 { 
    #path to Unicorn SOCK file; 
} 

upstream app2 { 
    #path to Unicorn SOCK file; 
} 

upstream app3 { 
    #path to Unicorn SOCK file; 
} 

# ...several more apps 

server { 
    listen 443 ssl; 
    access_log #path; 
    error_log #path; 

    ssl_certificate #path; 
    ssl_certificate_key #path; 

    add_header X-UA-Compatible "IE=Edge,chrome=1"; 

    root /srv/apps/app1/public; 

    location /app1 { 
      proxy_pass http://app1; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
    } 

    location /app2 { 
      proxy_pass http://app2; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
    } 

    location /app3 { 
      proxy_pass http://app3; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
    } 

    # ...several more apps 

} 

このセットアップは1年かそこらのために問題なく働いているが、私は、私はすべて間違ってこれをやっているこのしつこい感じている....

アプリを追加し続けると問題にぶつかりますか?これを行うより良い方法はありますか?

更新:

  • 静的リソースパスの衝突: "問題、" 私が意味することで

  • メモリの問題?すなわち、私は同じ動作を達成するために必要以上のものを使用していますか?

によって「これを行うには良い方法、」私は意味:

URL にサブディレクトリの名前を解析することによって、関連するユニコーンサーバーにリクエストを送信するよりも、他の
  • 複数のアプリを提供するために、単一のNginxリバースプロキシを使用する必要がありますか?

答えて

0

differentsアプリケーションと同じ設定では、includeディレクティブを使用できます。

例、このコンテンツを /etc/nginx/global_proxy.conf という名前のファイルを作成します。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 

そして nginx.conf であなたのセクション/ APPX:

location /appX { 
     proxy_pass http://appX; 
     include /etc/nginx/global_proxy.conf; 
} 

そして、セキュリティを強化するために、dhparamを追加し、SSL設定に追加することをお勧めします。

# SSL : 
# drop SSLv3 (POODLE vulnerability) 
    ssl_protocols   TLSv1 TLSv1.1 TLSv1.2; 
# Recommanded ciphers 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 
    ssl_prefer_server_ciphers on; 
    ssl_session_cache shared:SSL:10m; 
# Diffie–Hellman key exchange (D–H) 
    ssl_dhparam /etc/nginx/ssl/dhparam.pem; 
# config to enable HSTS(HTTP Strict Transport Security) 
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; 
# force timeouts if one of backend is died 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 

dhparamを生成します。PEMファイル:別のファイルにプロキシの設定を含めることで、ファイルを少し凝縮する方法についてのヒントのための

opensslのdhparam -out dhparam.pem 4096

+0

感謝。しかし、ちょっとわかりましたので、質問を更新しました...本当に探しているのは、単一のNginxリバースプロキシを使用した複数のアプリケーションの一般的なプラクティスが良いアプローチであるかどうかです。 – chester

関連する問題