go-proxy-cache alternatives and similar packages
Based on the "Server Applications" category.
Alternatively, view go-proxy-cache alternatives based on common mentions on social networks and blogs.
traefik10.0 9.1 go-proxy-cache VS traefikThe Cloud Native Application Proxy
etcd10.0 9.9 go-proxy-cache VS etcdDistributed reliable key-value store for the most critical data of a distributed system
minio10.0 9.9 go-proxy-cache VS minioMulti-Cloud :cloud: Object Storage
Caddy10.0 9.1 go-proxy-cache VS CaddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
nsq9.9 1.6 go-proxy-cache VS nsqA realtime distributed messaging platform
consul9.9 9.9 go-proxy-cache VS consulConsul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
Vault9.9 9.9 go-proxy-cache VS VaultA tool for secrets management, encryption as a service, and privileged access management
apex9.6 2.1 go-proxy-cache VS apexBuild, deploy, and manage AWS Lambda functions with ease (with Go support!).
RoadRunner9.4 9.3 go-proxy-cache VS RoadRunner🤯 High-performance PHP application server, process manager written in Go and powered with plugins
SFTPGo9.3 9.1 go-proxy-cache VS SFTPGoFully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob
Ponzu9.3 0.0 go-proxy-cache VS PonzuHeadless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go.
Easegress9.2 9.1 go-proxy-cache VS EasegressA Cloud Native traffic orchestration system
Jocko9.2 0.0 go-proxy-cache VS JockoKafka implemented in Golang with built-in coordination (No ZK dep, single binary install, Cloud Native)
devd8.7 0.0 go-proxy-cache VS devdA local webserver for developers
Fider8.6 5.6 go-proxy-cache VS FiderOpen platform to collect and prioritize feedback
algernon8.3 8.2 go-proxy-cache VS algernon:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support
discovery8.3 0.0 go-proxy-cache VS discoveryA registry for resilient mid-tier load balancing and failover.
Flagr8.3 0.0 go-proxy-cache VS FlagrFlagr is a feature flagging, A/B testing and dynamic configuration microservice
flipt8.2 9.2 go-proxy-cache VS fliptAn open source, self-hosted feature flag solution
Key TransparencyA transparent and secure way to look up public keys.
Trickster8.2 5.2 go-proxy-cache VS TricksterOpen Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
Wish8.0 6.8 go-proxy-cache VS WishMake SSH apps, just like that! 💫
GeoDNS in Go7.9 0.0 go-proxy-cache VS GeoDNS in GoDNS server with per-client targeted responses
jackal7.9 6.9 go-proxy-cache VS jackal💬 Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP).
Golang API Starter KitGo Server/API boilerplate using best practices DDD CQRS ES gRPC
Sparta7.0 0.0 go-proxy-cache VS Spartago microservices, powered by AWS Lambda
go-feature-flagA simple and complete self hosted feature flag solution, without any complex backend system to install, all you need is a file as your backend. 🎛️
Euterpe6.4 0.0 go-proxy-cache VS EuterpeSelf-hosted music streaming server 🎶 with RESTful API and Web interface. Think of it as your very own Spotify! ☁️🎧
Walrus6.3 9.0 go-proxy-cache VS Walrus🔥 Fast, Secure and Reliable System Backup, Set up in Minutes.
goproxy6.0 0.0 go-proxy-cache VS goproxy🦁 goproxy is a proxy server which can forward http or https requests to remote servers./ goproxy 是一个反向代理服务器，支持转发 http/https 请求。
Eru5.7 7.9 go-proxy-cache VS EruEru, a simple, stateless, flexible, production-ready orchestrator designed to easily integrate into existing workflows. Can run any virtualization things in long or short time.
Aegis5.7 0.0 go-proxy-cache VS AegisServerless Golang deploy tool and framework for AWS Lambda
marathon-consulIntegrates Marathon apps with Consul service discovery.
dudeldu4.8 0.0 go-proxy-cache VS dudelduA simple SHOUTcast server.
dummy4.8 7.7 go-proxy-cache VS dummyRun mock server based off an API contract with one command
cortex-tenant4.4 3.8 go-proxy-cache VS cortex-tenantPrometheus remote write proxy that adds Cortex tenant ID based on metric labels
lets-proxy24.0 7.0 go-proxy-cache VS lets-proxy2Reverse proxy with automatically obtains TLS certificates from Let's Encrypt
Simple CRUD App w/ Gorilla/Mux, MariaDBSimple CRUD Application with Go, Gorilla/mux, MariaDB, Redis.
lama.sh3.7 2.4 go-proxy-cache VS lama.shRun "curl -L lama.sh | sh" to start a web server
psql-streamer3.3 0.0 go-proxy-cache VS psql-streamerStream database events from PostgreSQL to Kafka
nginx-prometheusTurn Nginx logs into Prometheus metrics
simple-jwt-providerSimple and lightweight provider which exhibits JWTs, supports login, password-reset (via mail) and user management.
autobd2.4 0.0 go-proxy-cache VS autobdautobd is an automated, networked and containerized backup solution
protoxy2.3 0.8 go-proxy-cache VS protoxyA proxy server than converts JSON request bodies to protocol buffers
yakvs2.1 1.1 go-proxy-cache VS yakvsA small, networked, in-memory key-value store.
go-fitbit1.3 10.0 go-proxy-cache VS go-fitbitFitbit API for Go to fetch, add, update and delete data on Fitbit using REST API
Moxy0.9 0.0 go-proxy-cache VS MoxyMocker + Proxy Application
riemann-relay0.6 0.0 go-proxy-cache VS riemann-relayService for relaying Riemann events to Riemann/Carbon destinations
UDP-server-go0.3 6.0 go-proxy-cache VS UDP-server-goUDP-server-go
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of go-proxy-cache or a related project?
Go Proxy Cache
Simple Reverse Proxy with Caching, written in Go, using Redis.
>>> (semi) production-ready <<<
💗 Support the Project 💗
This project is only maintained by one person, Fabio Cicerchia.
It started as a simple caching service, now it has a lot of pro functionalities just for FREE 😎
Maintaining a project is a very time consuming activity, especially when done alone 💪 I really want to make this project better and become super cool 🚀
Two commercial versions have been planned: PRO and PREMIUM.
The development of the COMMUNITY version will continue, but priority will be given to the COMMERCIAL versions.
- If you'd like to support this open-source project I'll appreciate any kind of contribution.
- If you'd like to sponsor the commercial version, please [get in touch with me](mail:[email protected]).
How it works
When the request is cached:
.---------. .---------. .---------. | | | | | | | | | | | | you --->|---->----|--->---|---->----|--->---|-->--. | | | | | | | | <---|----<----|---<---|----<----|---<---|--<--' | `---------´ `---------´ `---------´ network go-proxy-cache redis
When the request is not cached:
website ,_, | | .---+-+---. .---------. .---------. | | '-->|--->---|---->----|--->---|-->--, | | '-<---|---<---|<--, | | | | | | | | | | | | you --->|---->----|--->---|---' | | | | | | | | | | | <---|----<----|---<---|----<----|---<---|--<--' | `---------´ `---------´ `---------´ network go-proxy-cache redis
Small, Pragmatic and Easy to Use
- 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.
- Full Page Caching, via Redis.
- Cache Invalidation, by calling HTTP Method
PURGEon the resource URI.
- Cache Bypass, by using the HTTP Header
X-Go-Proxy-Cache-Force-Freshthe 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
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.
- 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).
- HTTP/2 Support, HTTP/2 Pusher achievable only if upstream implements HTTP header
Link. Server Push is deprecated (since not really supported in the browsers).
- 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.
- Healthcheck Endpoint, exposes the route
- Upstream Healthcheck, verifies periodically if upstream nodes are healthy.
- Respecting HTTP Cache Headers,
- Fully Tested, Unit, Functional & Linted & 0 Race Conditions Detected.
- Cache Circuit Breaker, bypassing Redis when not available.
- Multiple domains, override and fine-tune the global settings per domain.
- 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
- 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.
This is a simple (and not comprehensive) configuration:
server: port: http: "80" https: "443" tls: cert_file: server.pem key_file: server.key upstream: host: ~ port: 443 scheme: https endpoints: - 127.0.0.1 http_to_https: true redirect_status_code: 301 cache: host: localhost domains: example_com: server: upstream: host: example.com example_org: server: upstream: host: example.org
For more details about the full server configuration check the relative documentation in docs/CONFIGURATION.md
$ go-proxy-cache -h Usage of go-proxy-cache: -config string config file (default "config.yml") -debug enable debug -log string log file (default stdout) -test test configuration -verbose enable verbose -version display version [...]
For examples check the relative documentation in docs/EXAMPLES.md
- Bug-fixes (e.g.
1.2.3) are released as needed (no additional features are delivered in those versions, bug-fixes only).
- Each version is supported until the next one is released (e.g.
1.1.xwill be supported until
- We use Semantic Versioning.
acme/autocert: server name component count invalid
Let's Encrypt cannot be used locally, as described in this thread
acme/autocert: missing certificate
Let's Encrypt cannot be used locally, as described in this thread
501 Not Implemented
If there's no domain defined in the main configuration nor in the domain overrides, and a client will request an unknown domain the status
- WebSocket and TimeoutHandler are not working together, because TimeoutHandler doesn't support Hijacker, so in order to have WebSocket support the setting
TimeoutHandlermust be set to
context deadline exceeded
The reason is because the timeout on the context.Context of the client side of the request is shorter than the timeout in the server side handler. This means that the client gives up before any response is written.
- Proxy servers and tunneling
- Make resilient Go net/http servers using timeouts, deadlines and context cancellation
- So you want to expose Go on the Internet
- Writing a very fast cache service with millions of entries in Go
- RFC7234 - Hypertext Transfer Protocol (HTTP/1.1): Caching
- The complete guide to Go net/http timeouts
- What Happens in a TLS Handshake? | SSL Handshake
- A step by step guide to mTLS in Go
- Learning HTTP caching in Go
- Nginx HTTP2 Server Push
- Introducing HTTP/2 Server Push with NGINX 1.13.9
- Preload - W3C Editor's Draft 20 August 2020
- Web Linking
- HTTP Health Checks
- Types of load balancing algorithms
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)
Go Proxy Cache
Copyright (c) 2022 Fabio Cicerchia [email protected]
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*Note that all licence references and agreements mentioned in the go-proxy-cache README section above are relevant to that project's source code only.