GoProxy is an HTTP proxy library for Go that enables developers to build customized proxy servers with configurable behavior.
The library solves the problem of needing a programmable, production-capable HTTP proxy by providing a net/http handler that can intercept and manipulate both requests and responses. It supports multiple proxy modes including regular HTTP proxying, HTTPS tunneling via CONNECT, HTTPS man-in-the-middle interception with certificate generation, and raw connection hijacking. Developers can apply actions conditionally based on specific hosts using equality checks or regex matching, use custom HTTP transports for backend requests, cache MITM certificates to reduce CPU overhead, and redirect relative-path traffic to custom handlers. The proxy integrates seamlessly with standard Go HTTP middleware patterns for logging, compression, and error recovery.
GoProxy suits projects that need fine-grained control over HTTP traffic flowing through a proxy, such as debugging tools, traffic manipulation for testing, or request filtering systems. It is designed to handle reasonable production traffic volumes while remaining customizable and programmable. The library's approach of being a simple net/http handler makes it suitable for teams already working within the Go ecosystem and comfortable with middleware-based architectures.
The project maintains active development with regular workflow checks and documentation updates. Pull requests are welcomed and the maintainers actively seek sponsorship to sustain ongoing work on bug fixes and new features. The project has established communication channels through a community group and maintains transparency about its maintenance status and resource needs.