Hi Guillaume, I'l give it a try.
Thank you very much Riccardo 12/07/2023, 17:27 Guillaume Quintard ha scritto: > Hi Riccardo, > > > > You are right, I assumed that the tags were uuids of some sorts and welp, > they're not. > > > > The best way would be to ask magento to fix it by including a hash of the > host or something in each tag, but that's probably not going to happen any > time soon. > > > > The next best way is to teach Varnish to be a bit more selective when > banning. This is done in three steps. > > > > First, we are going to mark the backend response with the host it comes from > (maybe Magento2 already does it in some form, in which case you can use that > header instead): > > > > # add this to the beginning of vcl_backend_response > > sub vcl_backend_response { > > set beresp.http.x-host = bereq.http.host; > > ... > > > > Then, we change the ban() calls to only apply to the responses with the right > x-host headers: > > > > if (req.http.X-Magento-Tags-Pattern) { > ban("obj.http.x-host == + req.http.host + " && > obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern); > } > if (req.http.X-Pool) { > ban("obj.http.x-host == + req.http.host + "&& obj.http.X-Pool ~ " + > req.http.X-Pool); > } > > > Lastly, we don't need the x-host header to be exposed to the client, so we > strip it at the beginning of vcl_deliver: > > > > sub vcl_deliver { > > unset resp.http.x-host; > > ... > > > > disclaimer: This test is completely untested, and it's early in the morning, > so you probably shouldn't trust me too much and you should test this before > throwing it in prod. > > > > Technically, you *could* use req.http.host directly, but you don't want to > because of the ban-lurker and its performance implications. > > > > Hope this helps. > > > > -- > > Guillaume Quintard > > > > > > On Wed, Jul 12, 2023 at 4:15 AM Riccardo Brunetti <riccardo.brune...@host.it> > wrote: > > > Hello Guillaume. > > > > Thanks for your answer. > > > > The VCL is actually almost identical to that you mentioned in the link (I'm > > attaching it without references to names and IP anyway) > > > > > > > > What somehow worries me is that, if I understand, the ban is performed > > according to some "X-Magento-Tags". > > > > Now, if I look at the output of varnishlog and search for "*Tags*", what I > > get is: > > > > > > > > 1) while navigating the site: > > > > > .... > > > > > > - RespHeader X-Magento-Tags: NAVIGATIONPRO_MENU_2 > > > > > > - RespUnset X-Magento-Tags: NAVIGATIONPRO_MENU_2 > > > > > > - RespHeader X-Magento-Tags: > > > store,cms_b,gdpr_c,theme_editor_backend_css_block,cms_b_header_cms_links,cms_b_argento_scroll_up,cms_b_footer_cms_content,cms_b_footer_payments,cms_b_header_block_custom_links,cms_b_main_bottom_newsletter,cms_b_main_bottom_strenghts,cms_b > > > > > > - RespUnset X-Magento-Tags: > > > store,cms_b,gdpr_c,theme_editor_backend_css_block,cms_b_header_cms_links,cms_b_argento_scroll_up,cms_b_footer_cms_content,cms_b_footer_payments,cms_b_header_block_custom_links,cms_b_main_bottom_newsletter,cms_b_main_bottom_strenghts,cms_b > > > > > > - BerespHeader X-Magento-Tags: > > > cat_c_595,cat_c_p_595,store,cms_b,gdpr_c,theme_editor_backend_css_block,cms_b_header_cms_links,cms_b_argento_scroll_up,cms_b_footer_cms_content,cms_b_footer_payments,cms_b_header_block_custom_links,cms_b_main_bottom_newsletter,cms_b_main_ > > > > > > - BerespHeader X-Magento-Tags: NAVIGATIONPRO_MENU_2 > > > > > > - RespHeader X-Magento-Tags: NAVIGATIONPRO_MENU_2 > > > > > > - RespUnset X-Magento-Tags: NAVIGATIONPRO_MENU_2 > > > > > > - RespHeader X-Magento-Tags: > > > cat_c_595,cat_c_p_595,store,cms_b,gdpr_c,theme_editor_backend_css_block,cms_b_header_cms_links,cms_b_argento_scroll_up,cms_b_footer_cms_content,cms_b_footer_payments,cms_b_header_block_custom_links,cms_b_main_bottom_newsletter,cms_b_main_ > > > > > > - RespUnset X-Magento-Tags: > > > cat_c_595,cat_c_p_595,store,cms_b,gdpr_c,theme_editor_backend_css_block,cms_b_header_cms_links,cms_b_argento_scroll_up,cms_b_footer_cms_content,cms_b_footer_payments,cms_b_header_block_custom_links,cms_b_main_bottom_newsletter,cms_b_main_ > > > > > > ..... > > > > 2) when performing a purge (php bin/magento c:f): > > > > > ... > > > > > > - ReqHeader X-Magento-Tags-Pattern: .* > > > > > > ... > > > > In both cases I can't see any specific reference to that particular site. > > > > > > > > Thanks again. > > > > Riccardo > > > > > > > > 11/07/2023, 17:09 Guillaume Quintard ha scritto: > > > > > Hi Ricardo, > > > > > > > > > > > > Having your VCL (even anonymized) would help here, otherwise debugging is > > > pretty hard. For the moment, I'm going to assume you are using a > > > variation of > > > https://github.com/magento/magento2/blob/13e54e1b28a5d590ab885bd4df9f58877b549052/app/code/Magento/PageCache/etc/varnish6.vcl > > > and deal in generalities. > > > > > > > > > > > > The way that vcl invalidates content is through bans: > > > https://github.com/magento/magento2/blob/13e54e1b28a5d590ab885bd4df9f58877b549052/app/code/Magento/PageCache/etc/varnish6.vcl#L30-L47 > > > which doesn't need the host header, it's just uses unique tags pushed by > > > the backend in response headers. > > > > > > If it was using the actual purge mechanism, then modifying the host > > > should be sufficient because purge acts on the object found in the cache > > > (and if you can get a hit, you can get purged). > > > > > > > > > > > > Here's a good primer on invalidation: > > > https://docs.varnish-software.com/tutorials/cache-invalidation/ > > > > > > > > > > > > Kind regards, > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Guillaume Quintard > > > > > > > > > > > > > > > > > > On Tue, Jul 11, 2023 at 4:14 AM Riccardo Brunetti > > > <riccardo.brune...@host.it> wrote: > > > > > > > Hello. > > > > > > > > I'm new to varnish and I have a question concerning how to manage > > > > multiple sites using the same varnish cache frontend. > > > > > > > > > > > > > > > > More specifically, I need to setup a single varnish cache server for > > > > two different Magento2 sites. > > > > > > > > > > > > > > > > Looking around I found that it is possible to manage different backends > > > > using something like: > > > > > > > > > > > > > > > > > if (req.http.host == "somesite") { > > > > > > > > > > set req.backend_hint = somebackend; > > > > > > > > > > } > > > > > > > > Now, I have two different Magento2 sites and, using the above > > > > expression, I can handle the two different backends. > > > > > > > > The problem is that I can't understand how to handle the PURGE/BAN of > > > > the two independently. > > > > > > > > > > > > > > > > As far as I understand from the .vcl file that Magento2 itself produces > > > > there is nothing inside the "purge" section that specifies which > > > > resources must be purged. > > > > > > > > It seems to me that is site A performs a purge, than also the cache of > > > > site B resources will be cleaned. > > > > > > > > > > > > > > > > Can you help me with this or point me to some example or tutorials? > > > > > > > > > > > > > > > > Thanks a lot > > > > > > > > Riccardo > > > > > > > > _______________________________________________ > > > > > > > > varnish-misc mailing list > > > > > > > > varnish-misc@varnish-cache.org > > > > > > > > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
_______________________________________________ varnish-misc mailing list varnish-misc@varnish-cache.org https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc