在我们的日常开发中,前端程序和后端程序都存在大量 Nginx 配置,通过 Nginx 配置进行 URL 的处理以及实现用户请求的路由。
采用这种方法的优点是:简单,拦截一切请求,然后直接进行跳转或进行其他处理。
但是,解决问题的方案 和 解决问题的最方案 是两回事情,这样处理请求也存在很多问题,所以我们尝试将应用程序与 Nginx 解耦。
将业务配置从Nginx中脱离的原因:
1)应用与基础设施的解耦性,增加可移植性:将Nginx与业务应用的解耦,提高程序的可移植性,应用程序应是基础设置无关的。
2)应用程序的可维护性:简化应用程序的维护成本,在问题排查追踪过程中可快速溯源。
3)个人技能技能:由于基础设施并不是每个人的专长领域,部分基础设置配置中会忽略某些潜在的问题,可能会存在可移植性差、稳定性差的问题。
不是说不能在 Nginx 中进行处理,而是说能在应用层面解决的问题尽量放在应用程序层面解决,尽量避免放在基础层面。除非应用层面解决不了,万不得已才放入 Nginx 之类的基础设置中处理。
实际上 Nginx 把请求传递给应用,我们应该在应用的路由来决定这个资源的请求该如何处理,而不是再 Nginx 的配置中混入业务相关的东西。
相关链接
Yii2 cors filters error that No ‘Access-Control-Allow-Origin’ header is present