Go Proxy Cache PRO

Simple Reverse Proxy with Caching, written in Go, using Redis.

>>> production-ready <<<

MIT License Pull Requests Maintenance Mentioned in Awesome Go Last Commit Release Date GitHub all releases GitHub go.mod Go version GitHub release (latest by date) Docker pulls Docker stars GitHub Workflow Status CII Best Practices BCH compliance Go Report Card FOSSA Status
codecov Maintainability Technical Debt Total alerts


Features (PRO Edition)

Get all the functionalities from Community Edition, plus the following PRO features to make GPC more powerful.

Contact Us!
Dynamic reload

Reload internal configuration without restarting the process, with zero downtime.

Cache Tags + Tag Purge

Group URL resources with cache tags (X-Go-Proxy-Cache-Tag) and be able to invalidate a cache tag in one PURGE request.

Comprehensive Dashboard

Show additional metrics about CPU, Memory, Disk, Network usage, System metrics (load, uptime), Incoming/Outgoing traffic, Worldwide distribution on map, HTTP Request Headers.

Additional Tracing Tags and Events

More deeper traces for cache layer, load balancing algorithms, additional http request's details.

Multi distro image

Docker image with os support for Debian, Ubuntu, Alpine, Fedora, Amazon Linux 2.

Additional Prometheus metrics

Get a deeper overview of the internals with additional metrics tracked with Prometheus.


Features (PREMIUM Edition)

Get all the functionalities from PRO Edition, plus the following PREMIUM features to go to the extreme.

Contact Us!
Kubernetes Setup

Configure the Kubernetes resources easily via Helm or YAML.

Ingress Controller

High-Availability Cluster

HA support for active-active or active-passive nodes.

Rate Limiting

Limit incoming HTTP request globally or per user.

Extra Customisation

Customise internal timeouts and intervals (eg: health check, load balancing, cache stampede protection, log levels).

Complete Sentry integration

Additional tags, release tracking, breadcrumbs, runtime/operating system data, distributed tracing.

Multi architecture

Docker image with platform support for amd64, arm32/v7, arm64v8.


Customer Support

Get the help needed to get set with GPC

Contact Us!
Unlimited Updates

Premium Customer Support

Get in touch with us for any issue you might have and we will help you fixing it.


Small, Pragmatic and Easy to Use

Dockerized

Compiled

Easily Configurable

via YAML or Environment Variables.

Self-Contained

does not require Go, Git or any other software installed. Just run the binary or the container.


Caching

Full Page Caching

via Redis

Cache Invalidation

by calling HTTP Method PURGE on the resource URI.

Cache Bypass

by using the HTTP Header X-Go-Proxy-Cache-Force-Fresh the request will always be fresh.

Support Chunking

by replicating exactly the same original amount.

Selective HTTP Status Codes/Methods

allows caching for different response codes or HTTP methods.

ETag Support

generating non-weak tags, handling 304 Not Modified, managing HTTP headers If-Modified-Since, If-Unmodified-Since, If-None-Match, If-Match.
ETag wrapper doesn't work well with WebSocket and HTTP/2.

Cache Stampede Prevention

delaying invalidation request to the backend using an extra small random TTL (between 5s and 10s).

Serving Stale Content

used mainly for avoiding cache stampede, for maximum 10s.

Upstream DNS Resolution Cache

the upstream hostname will be cached to speed up the response and avoid the DNS resolution at each request.


Load Balancing

HTTP & HTTPS Forward Traffic

Load Balancing

uses a list of IPs/Hostnames as load balanced backend servers.

Multiple Algorithms Available

choose among IP Hash, Least Connections, Random or Round-Robin.

Support for HTTP Basic Auth

it's possible to provide the HTTP Basic Auth for each endpoint (by specify user:pass in the URL).


Security

HTTP/2 Support

HTTP/2 Pusher is achievable only if upstream implements HTTP header Link.

SSL/TLS Certificates via ACME

provides automatic generation of SSL/TLS certificates from Let's Encrypt and any other ACME-based CA.

Using your own SSL/TLS Certificates

optional


Reliability

Healthcheck Endpoint

exposes the route /healthcheck (internally).

Upstream Healthcheck

verifies periodically if upstream nodes are healthy.

Respecting HTTP Cache Headers

Vary, ETag, Cache-Control and Expires.

Fully Tested

Unit, Functional & Linted & 0 Race Conditions Detected.

Cache Circuit Breaker

bypassing Redis when not available.


Scaling

Multiple domains

override and fine-tune the global settings per domain.


Customisations

HTTP to HTTPS Redirects

optional, status code to be used when redirecting HTTP to HTTPS.

GZip Compression

optional

Server Timeouts

it is possible to configure in details the server overall timeouts (read, write, headers, handler, idle).

Fine tuning circuit-breaker and TLS settings

it is possible to adjust the settings about thresholds, timeouts and failure rate.

Configure error handler

stdout or file.

Debug/Verbose mode

it is possible to have additional levels of details by settings the flags -verbose or -debug.


Logging

Request Tracing

each line in logs has a RequestID to easily identify the response flow.

OpenTelemetry Tracing

each request has a deep tracing with Jaeger (optional).

Prometheus Endpoint

exposes the route /metrics (internally) to serve Prometheus metrics.

Support for Sentry & Syslog

all warning/error logs can be forwarded to Sentry and/or Syslog.