Http proxy cache server in go

Hi all:

I’am searching for a http proxy cache server in go, there are many products such as squid, Apache Traffic Server(ATS), varnish etc. which are in C/C++.

Our company is a CDN provider, our product is written in C, which is more and more difficult to maintain as time goes by, because of the epoll && async I/O design module

Squid is a single process program and has a long history which is a little old for modern usage, ATS is strong but complicated for plugin development and for problem hacking, through many company use nginx proxy + ATS or nginx proxy + squid as their product architect.

Since go is simple and is a system level language, goroutine is a very impress feature for writing hight performance cache service. I believe It is easier to do cache things in go than in C.

so may question is that, does caddy can be extended to a http proxy cache server? or is there many other ways?

Yep! Not too long ago one of our contributors announced the availability of a new cache plugin:

So check out the docs - your http proxy cache server might be as simple this:

example.com {
  cache
  proxy / http://backend
}

https://caddyserver.com/docs/http.cache
https://caddyserver.com/docs/proxy

1 Like