Mailing List Archive

Varnish backend request sent to itself?
Hi,

I'm using varnish-5.2.1 revision 67e562482 as a Docker image and
trying to restore the setup that was working some time ago.

However I'm getting 503 Backend fetch failed.

The VCL file clearly specifies the backend:

backend default {
.host = "atomgraph.some_host.com";
.port = "80";
.first_byte_timeout = 60s;
}

Varnish itself runs on atomgraph.some_host.varnish, as specified in
docker-compose.yml.

When I login into the container, I see the client request:

- ReqMethod GET
- ReqURL /smth/smth/...
- ReqProtocol HTTP/1.1
- ReqHeader Accept:
application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
- ReqHeader Cache-Control: no-cache
- ReqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
- ReqHeader Host: atomgraph.dydra.varnish
- ReqHeader Connection: Keep-Alive
- ReqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
- ReqHeader X-Forwarded-For: 172.30.0.3

However when I look at the backend request:

- BereqMethod GET
- BereqURL /smth/smth/...
- BereqProtocol HTTP/1.1
- BereqHeader Accept:
application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
- BereqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
- BereqHeader Host: atomgraph.dydra.varnish
- BereqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
- BereqHeader X-Forwarded-For: 172.30.0.3
- BereqHeader X-Varnish: 32783

it looks like it is calling itself (i.e. the local fake .varnish
backend host instead of the real .com one), judging from the
BereqHeader Host.

If that is the case, then no wonder that the backend request fails:

- BerespProtocol HTTP/1.1
- BerespStatus 503
- BerespReason Service Unavailable
- BerespReason Backend fetch failed

How can this be?

Martynas
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Re: Varnish backend request sent to itself? [ In reply to ]
My attempt to obfuscate the hosts failed :) Sorry for that.

In short: the configured backend is atomgraph.dydra.com but
BereqHeader Host is atomgraph.dydra.varnish. Why?

On Wed, Mar 18, 2020 at 11:36 AM Martynas Jusevi?ius
<martynas@atomgraph.com> wrote:
>
> Hi,
>
> I'm using varnish-5.2.1 revision 67e562482 as a Docker image and
> trying to restore the setup that was working some time ago.
>
> However I'm getting 503 Backend fetch failed.
>
> The VCL file clearly specifies the backend:
>
> backend default {
> .host = "atomgraph.some_host.com";
> .port = "80";
> .first_byte_timeout = 60s;
> }
>
> Varnish itself runs on atomgraph.some_host.varnish, as specified in
> docker-compose.yml.
>
> When I login into the container, I see the client request:
>
> - ReqMethod GET
> - ReqURL /smth/smth/...
> - ReqProtocol HTTP/1.1
> - ReqHeader Accept:
> application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
> - ReqHeader Cache-Control: no-cache
> - ReqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
> - ReqHeader Host: atomgraph.dydra.varnish
> - ReqHeader Connection: Keep-Alive
> - ReqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
> - ReqHeader X-Forwarded-For: 172.30.0.3
>
> However when I look at the backend request:
>
> - BereqMethod GET
> - BereqURL /smth/smth/...
> - BereqProtocol HTTP/1.1
> - BereqHeader Accept:
> application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
> - BereqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
> - BereqHeader Host: atomgraph.dydra.varnish
> - BereqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
> - BereqHeader X-Forwarded-For: 172.30.0.3
> - BereqHeader X-Varnish: 32783
>
> it looks like it is calling itself (i.e. the local fake .varnish
> backend host instead of the real .com one), judging from the
> BereqHeader Host.
>
> If that is the case, then no wonder that the backend request fails:
>
> - BerespProtocol HTTP/1.1
> - BerespStatus 503
> - BerespReason Service Unavailable
> - BerespReason Backend fetch failed
>
> How can this be?
>
> Martynas
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Re: Varnish backend request sent to itself? [ In reply to ]
Nevermind, I figured out I wasn't even passing my VCL config correctly :)

On Wed, Mar 18, 2020 at 11:41 AM Martynas Jusevi?ius
<martynas@atomgraph.com> wrote:
>
> My attempt to obfuscate the hosts failed :) Sorry for that.
>
> In short: the configured backend is atomgraph.dydra.com but
> BereqHeader Host is atomgraph.dydra.varnish. Why?
>
> On Wed, Mar 18, 2020 at 11:36 AM Martynas Jusevi?ius
> <martynas@atomgraph.com> wrote:
> >
> > Hi,
> >
> > I'm using varnish-5.2.1 revision 67e562482 as a Docker image and
> > trying to restore the setup that was working some time ago.
> >
> > However I'm getting 503 Backend fetch failed.
> >
> > The VCL file clearly specifies the backend:
> >
> > backend default {
> > .host = "atomgraph.some_host.com";
> > .port = "80";
> > .first_byte_timeout = 60s;
> > }
> >
> > Varnish itself runs on atomgraph.some_host.varnish, as specified in
> > docker-compose.yml.
> >
> > When I login into the container, I see the client request:
> >
> > - ReqMethod GET
> > - ReqURL /smth/smth/...
> > - ReqProtocol HTTP/1.1
> > - ReqHeader Accept:
> > application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
> > - ReqHeader Cache-Control: no-cache
> > - ReqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
> > - ReqHeader Host: atomgraph.dydra.varnish
> > - ReqHeader Connection: Keep-Alive
> > - ReqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
> > - ReqHeader X-Forwarded-For: 172.30.0.3
> >
> > However when I look at the backend request:
> >
> > - BereqMethod GET
> > - BereqURL /smth/smth/...
> > - BereqProtocol HTTP/1.1
> > - BereqHeader Accept:
> > application/rdf+xml,text/rdf+n3,application/n-triples,text/csv,application/rdf+xml,application/rdf+thrift,text/turtle,application/rdf+json
> > - BereqHeader Authorization: Basic bGlua2VkZGF0YWh1YjpqYThhc3BhdHV0YWtFdGhV
> > - BereqHeader Host: atomgraph.dydra.varnish
> > - BereqHeader User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
> > - BereqHeader X-Forwarded-For: 172.30.0.3
> > - BereqHeader X-Varnish: 32783
> >
> > it looks like it is calling itself (i.e. the local fake .varnish
> > backend host instead of the real .com one), judging from the
> > BereqHeader Host.
> >
> > If that is the case, then no wonder that the backend request fails:
> >
> > - BerespProtocol HTTP/1.1
> > - BerespStatus 503
> > - BerespReason Service Unavailable
> > - BerespReason Backend fetch failed
> >
> > How can this be?
> >
> > Martynas
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc