关键CloudFoundry上的Nginx/Apache2 httpd和Tomcat 7

关键CloudFoundry上的Nginx/Apache2 httpd和Tomcat 7,tomcat,nginx,apache2,cloud-foundry,Tomcat,Nginx,Apache2,Cloud Foundry,在CloudFoundry上的Tomcat实例前面配置web服务器的最佳方法是什么 我的任务是研究将web服务器放在PCF上Tomcat实例前面的最佳方法。主要用于重写URL(尝试从多站点应用程序的URL中删除应用程序上下文路径) 我遇到的主要问题是,除了作为java构建包的一部分捆绑的嵌入式web服务器(Jetty),它不包含任何其他web服务器NGINX或Apache2。我认为这是现有应用程序中非常常见的场景。我知道静态文件buildpack包含NGINX,PHP buildpack包含Ap

在CloudFoundry上的Tomcat实例前面配置web服务器的最佳方法是什么

我的任务是研究将web服务器放在PCF上Tomcat实例前面的最佳方法。主要用于重写URL(尝试从多站点应用程序的URL中删除应用程序上下文路径)

我遇到的主要问题是,除了作为java构建包的一部分捆绑的嵌入式web服务器(Jetty),它不包含任何其他web服务器NGINX或Apache2。我认为这是现有应用程序中非常常见的场景。我知道静态文件buildpack包含NGINX,PHP buildpack包含Apache2——这是否意味着我必须分叉java buildpack并定制buildpack以满足我的需要

另外,我如何修改httpd.conf?方法是否与文档相同?基本上是在.my customized buildpack/httpd(或nginx)/*.conf下添加配置文件

在CloudFoundry上的Tomcat实例前面配置web服务器的最佳方法是什么

这不适用于海报,但对于其他读者来说,考虑为什么要这样做是至关重要的。如果您只是在寻找负载平衡,您不需要这样做。CF平台自动处理负载平衡,这就是Java构建包在默认情况下不添加Nginx或Apache HTTPD的原因

主要用于重写URL(尝试从多站点应用程序的URL中删除应用程序上下文路径)

你考虑过这个问题吗。这是一种非常好的重写URL的方法,无需另一台服务器。它也存在了很长一段时间,并经过了战斗考验

另一种选择可能是使用()。这是CF平台提供的一种功能,允许您拦截传入请求并进行调整。它类似于JavaServlet过滤器,但位于更高的层。你只需要有第二个应用程序,它的作用类似于过滤器,平台处理到“过滤器”应用程序和你的原始应用程序的路由请求。上面的链接更详细地解释了这一点

话虽如此,我仍然建议您通过路由服务重新设置过滤器,只要过滤器对您有效,因为过滤器是一种重量较轻的解决方案

您还可以查看构建包的分叉/定制,但这更为复杂,并且它有持续的维护负担(您现在必须使构建包分叉保持最新)

我遇到的主要问题是,除了作为java构建包的一部分捆绑的嵌入式web服务器(Jetty),它不包含任何其他web服务器NGINX或Apache2

虽然这在CF之外很常见,但在CF中通常不需要。平台本身提供负载平衡,这是进行这种设置的主要原因。在CF上,如果您还添加了Nginx或apachehttpd,那么在请求路径中会出现额外的不必要的跃点

默认情况下:浏览器->负载平衡器->gorouters->你的应用程序(tomcat/jetty)

你想做什么:浏览器->负载均衡器->gorouters->Nginx/HTTPD->你的应用程序(tomcat/jetty)

此外,该平台更适合于做出负载平衡决策,因为它知道什么时候可以放大和缩小应用程序实例

请仔细考虑是否需要增加这个额外的跳数。它增加了延迟、复杂性和另一个可能的故障向量

我知道静态文件buildpack包含NGINX,PHP buildpack包含Apache2

Nginx和HTTPD包含在这些构建包中,因为它是通过HTTP提供内容的主要方式。较新版本的PHP有一个内置的web服务器,但不建议在生产中使用,因此我们仍然依赖Nginx或HTTPD来处理HTTP请求并将它们传递给PHP(通过FastCGI)

另外,我如何修改httpd.conf?方法是否与文档相同?基本上是在.my customized buildpack/httpd(或nginx)/*.conf下添加配置文件

对不起,我不明白你的问题。您说您使用的是上面的Java应用程序,因此不会有任何HTTPD或Nginx配置。您是否正在尝试分叉和定制Java构建包?如果是这样的话,这可能值得提出自己的问题

希望有帮助