2016-12-15 31 views
0

我有一个运行Ubuntu 14.04的Linux操作系统,内存大约50GB。将多个Unicorn应用服务器与一个Nginx反向代理服务器配合使用,是否是不好的做法?

我有一个5或6个Ruby on Rails Web应用程序,每个应用程序都有一个独角兽应用程序服务器,全部由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 

} 

这种设置有没有问题,工作了一年左右的时间,但我有这个唠叨的感觉我做的这一切都错了....

我是否会遇到问题,如果我不断添加应用程序?有一个更好的方法吗?

更新:

通过 “的问题,” 我的意思是:

  • 静态资源路径冲突?
  • 内存问题?即使用超过我需要完成相同的行为?

并以“更好的方式来做到这一点,”我的意思是:

  • 比在URL解析出子目录的名称将请求发送到相关的麒麟服务器等
  • 我应该使用单个Nginx反向代理服务多个应用程序吗?

回答

0

对于相同的配置到不同的应用程序中,您可以使用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退房手续dhparam.pem 4096

+0

感谢小费就如何通过在一个单独的文件代理配置凝聚了文件位。然而,我只是更新了我的问题,所以它更清晰一些......我真正需要的是,是否使用单个Nginx反向代理的多个应用程序的一般实践是一种好方法,如果不是,为什么? – chester

相关问题