如何正确configurationPlay Framework 2.1+和Nginx的生产?

我正在尝试使用Nginx作为Amazon AMI上的前端HTTP服务器来正确设置Play Framework。

我对Play发布的官方文档有点困惑。 他们build议你跑步吗?

start -Dhttp.port=9000 

然后configurationNginx重新路由到端口9000为了正确地提供我的应用程序? 我觉得有一个专门的用户只是为了运行启动命令是一种浪费,是不是有更好的方法来做到这一点?

我真的很感激一些生产Play Frameworknetworking应用程序的最佳实践的基本策略。

我为此使用专用用户的原因是,我可以在一台机器上放置许多不同的环境,它们都不会被单独的用户ID相互踩踏。 例如,我们有一个名为“d1”的应用程序,我们必须把它放到几个环境中,所以我们为每个环境都有一个用户:

d1每隔一周testing一次

对于每晚构buildnginx.conf如下所示:

 upstream d1nightly { ip_hash; server 127.0.0.1:20101; server 127.0.0.1:20102; } server { listen 443 ssl; server_name nightly.d1.org; ssl_certificate /etc/ssl/certs/cert.pem; ssl_certificate_key /etc/ssl/private/key.pem; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!ADH:!MD5; ssl_prefer_server_ciphers on; location /500x.html { alias /usr/share/nginx/html/500x.html; } location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect http:// https://; add_header Pragma "no-cache"; proxy_pass http://d1nightly; error_page 500 502 503 504 /500x.html; } } 

现在当我们去nightly.d1.org我们得到夜间释放。

我们支付每个VM每小时的固定费率,而不是CPU时间,所以通过在testing期间将3个或4个环境打包到单个机器上,我们可以获得更高的性价比。

为了启动游戏应用程序,我有一个非常基本的shell脚本function:

 function startPlayAppd1 { #start a d1 play app with appropriate system properties nohup ${base_directory}/${app}-latest-${jvm}/${snapshot_name}/start \ -Dhttp.port=${listen_port} \ -Denv.name=${env_name} \ -Dlogger.file=${logger_file} \ -Dsession.secure=${session_secure} \ -Dga.domain=${ga_domain} \ -Djava.net.preferIPv4Stack=${preferIPv4Stack} \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=${jmx_port} \ -Dcom.sun.management.jmxremote.authenticate=${jmx_remote_authenticate} \ -Dcom.sun.management.jmxremote.password.file=jmxremote.password \ -Dcom.sun.management.jmxremote.access.file=jmxremote.access \ -Dcom.sun.management.jmxremote.ssl=false \ -Djavax.net.debug=${javaxDebugLevel} \ > ${listen_port}.nohup 2>&1 & sleep 5 } 

每个用户的环境的另一个优势就是其创造的灵活性。

正如您所看到的,添加了各种系统属性,例如启用JMX,以便我们的监视工具可以观察播放应用程序。

这是一个对我们的用例运行良好的解决scheme。