我目前正在Docker容器中运行Gunicorn服务器,该容器同时提供Flask应用程序和静态内容(在Swisscom CloudFoundry上)。
将nginx设置为提供静态内容的反向代理的正确方法是什么?我认为Staticfile buildpack不是要走的路吗?
有人可以指出我正确的方向吗?
答案 0 :(得分:1)
如果您使用的是Cloud Foundry,那么增加一个或两个额外的实例来扩展您的应用程序并处理更多负载是非常容易的。我建议您这样做,因为它非常简单,并且实际上适用于任何应用程序类型。那,看看客户端缓存。您只需将文件缓存在客户端,就可以减少对静态文件的请求所产生的服务器负载。
如果您确实要提供大量的静态文件,并且扩展应用程序的其他实例并不划算,则可以执行以下操作:
1。)使用Python buildpack推送Flask应用。这将为您的应用提供主要途径。
2。)使用静态文件buildpack使用单独的主机名或上下文路径推送您的应用程序文件。例如:static.example.com或www.example.com/static。
这样做,您会将所有请求路由到static.example.com
路由或www.example.com/static
路由,并将路由路由到Nginx托管的静态文件(由静态文件buildpack提供)。对您的主要路线或不对静态路径的请求最终将转到您的Python应用程序。平台会处理此问题,并确保根据您为每个应用定义的路由将路由转到正确的应用。
唯一的缺点是,这取决于您将静态内容分离出来,以便可以为静态内容映射自定义路由或自定义路由和路径。就是说,我认为这不是问题,因为您正在运行Flask。如果有问题,您可以随时映射多个路线和路径。根据文件的结构,这可能需要映射许多路由和路径。
如上所述,它具有依赖平台将静态请求路由到一个应用程序并将所有其他请求路由到另一个应用程序的优势。如果要尝试将Nginx设置为代理,则会为请求添加更多层的代理和更多的延迟。