![NVA:在 Varnish 之前还是之后重写?](https://linux22.com/image/647116/NVA%EF%BC%9A%E5%9C%A8%20Varnish%20%E4%B9%8B%E5%89%8D%E8%BF%98%E6%98%AF%E4%B9%8B%E5%90%8E%E9%87%8D%E5%86%99%EF%BC%9F.png)
我正在计划一个 NVA 服务器系统 (Nginx-Varnish-Apache),请求将按该顺序路由。Apache 将为 WordPress CMS 或类似系统提供服务。
我想知道在哪里应用额外的重写规则(例如手动将自定义重写添加到 conf)。重写应该在 Nginx 端还是 Apache 端进行?哪个更容易实现,哪个性能更好?还是应该在 Varnish 中重写?
据我所知,所有重写都可以在 Apache 中完成,因为 Varnish 将按原样提供这些重写的请求,从而降低了提供页面之前处理的需要(?)。
我这样说对吗?还是最好在从 Varnish(从 Apache 获取页面)请求页面之前进行重写?这要求服务器对每个请求进行实际检查和重写。但这样,所有重写都将是“即时”的,而无需在 Varnish 清除缓存。
示例 1:
我有一个安装了子域的 WordPress 多站点(子站点为foo.domain.com
、bar.domain.com
等等baz.domain.com
)。多站点根站点应位于www.domain.com
,但实际内容位于domain.com
(无www
)。
WordPress 本身处理子站点子域映射(数据库表切换),但 no-www 到 www 的重写应该手动完成。这个重写在哪里完成?
示例 2:
我在后端有一个特定的模板,有时可能会被重写,有时不会。假设它www.domain.com/offer/12345/?available=0
有时我们可能想重写 URL 以重定向到www.domain.com/offers
包含不可用数据的模板。
重写会时断时续,取决于网站是否有针对不可用优惠情况的内容。在 Varnish 之前或之后重写效果会更好吗?
(我知道为了实现自动化,这个重定向应该在网站的内部逻辑中完成,但为了这个例子,我们假设它应该由服务器本身重写。)