使用 Azure 应用程序网关时,是否可以删除 Nginx?

Is it OK to remove Nginx when using Azure application gateway?

我有一个用于 docker 当前 运行 django 的 Web 应用程序,其中 gunicorn 作为 wsgi 服务器,Nginx 作为反向代理。我没有通过 Nginx 提供任何静态资产,SSL 由 Azure 负责。

所以我的问题是,如果我使用 Azure 应用程序网关(带或不带 WAF),我可以删除 Nginx 吗?我看不到它有任何用处,除非我想使用缓存,而我不想使用缓存。 HTTP/2也是应用网关提供的。

Nginx 和 Azure 应用程序网关都充当具有第 7 层负载平衡功能和 WAF 的反向代理,以确保针对常见的 Web 漏洞和攻击提供强有力的保护。

应用程序网关支持自动缩放、SSL 卸载和 end-to-end SSL,Web 应用程序防火墙 (WAF),cookie-based session 亲和力,URL path-based 路由、多站点托管、重定向、重写 HTTP headers 和其他功能。有关受支持功能的完整列表,请参阅 Introduction to Application Gateway. Also, you're aware of application gateway limits.

而 Nginx 提供了比应用程序网关更好的 URL 重写和重定向功能。参见feedback。使用 Nginx,您可以在将请求传递到后端服务器之前重写请求的 URL。这意味着您可以更改文件的位置或请求路径,而无需修改向客户端公布的 URL。您还可以重定向请求。

在我看来,如果你只是想简单地用于负载均衡而不需要复杂地重写URL,那么使用Azure应用程序网关就足够了。对于复杂的用例重写​​,可以加上 Nginx。阅读 create Nginx rewrite rules and more details here.

选择 Azure 应用程序网关...并摆脱 Nginx。在云中时,使用所有 PaaS 平台功能是有意义的。