Website migration using Varnish?

Hugo Cisneiros (Eitch) hugo.cisneiros at
Mon Aug 12 16:39:56 CEST 2013

On Mon, Aug 12, 2013 at 6:49 AM,  <superoverdrive at> wrote:
> I would like to migrate a very old PHP website to Java - without loosing all
> internal pages...however I also do not want to migrate 100% of the old
> website, only abour 80%.
> My plan is to use varnish in order to fetch Tomcat (or Apache->Tomcat) pages
> from the new application and deliver all urls not found on the new
> application from the old php application.

Setup two backends:

backend be_java {

backend be_php {

On vcl_recv, the default backend will be the java one, meaning all
requests will go to the java backend first. But if you receive the
request if a custom header, you will serve from the PHP backend. This
custom header will be appended to the request by varnish when it gets
a 404 object response from the java backend:

sub vcl_recv {
  set req.backend = be_java;

  # if custom header is present, use the php backend
  if (req.http.X-Serve-From-Old == "1") {
    unset req.http.X-Serve-From-Old;
    set req.backend = be_php;


sub vcl_fetch {
  if (req.backend == be_java && beresp.status == 404) {
    # set custom header and restart request.
    set req.http.X-Serve-From-Old = "1";
    return (restart);


This should do the trick.

> Would you recommend to use Tomcat without Apache or with Apache?

It really depends if you're using apache features or not :) People use
apache in front of Tomcat to mix static and dynamic items, to use
mod_rewrite features easily, to virtual hosts with different dynamic
languages and so on. But if you're just using the application, keep it


More information about the varnish-misc mailing list