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.
10.0 9.7 go-proxy-cache VS etcdDistributed reliable key-value store for the most critical data of a distributed system
9.9 0.0 go-proxy-cache VS VaultA tool for secrets management, encryption as a service, and privileged access management
9.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.
9.3 9.8 go-proxy-cache VS RoadRunner🤯 High-performance PHP application server, load-balancer and process manager written in Golang
9.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.
8.4 1.5 go-proxy-cache VS discoveryA registry for resilient mid-tier load balancing and failover.
8.3 4.5 go-proxy-cache VS FlagrFlagr is a feature flagging, A/B testing and dynamic configuration microservice
A transparent and secure way to look up public keys.
8.1 7.5 go-proxy-cache VS TricksterOpen Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
Integrates Marathon apps with Consul service discovery.
5.5 9.1 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.
Simple CRUD Application with Go, Gorilla/mux, MariaDB, Redis.
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 <<<
How it works
When the request is not cached:
.---------. .---------. .---------. | | | | | | | | | | | | you ---->|---->----|--->---|---->----|--->---|-->--. | | | | | | | | <----|----<----|---<---|----<----|---<---|--<--' | `---------´ `---------´ `---------´ network go-proxy-cache redis
When the request is 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.
- Support Chunking, by replicating exactly the same original amount.
- Selective HTTP Status Codes/Methods, allows caching for different response codes or HTTP methods.
- HTTP & HTTPS Forward Traffic
- Load Balancing, uses a list of IPs/Hostnames as load balanced backend servers (supported only Round-Robin).
- HTTP/2 Support
- 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
- 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
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
- 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
Copyright (c) 2020 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.