A toolkit for creating code-first HTTP reverse proxies as middleware in ASP.NET Core applications.
ProxyKit is a toolkit for creating HTTP reverse proxies as middleware in ASP.NET Core applications. It enables developers to build code-first proxies that can forward requests, handle WebSocket connections, and apply custom logic like header manipulation or load balancing. It solves the need for embedding proxy functionality directly into .NET web apps without relying on external proxy servers.
ASP.NET Core developers who need to implement reverse proxy functionality within their applications, such as for API gateways, microservice routing, or custom request forwarding scenarios.
Developers choose ProxyKit for its seamless integration with ASP.NET Core, code-first flexibility, and ability to handle complex proxying logic like custom routing and load balancing directly in C#. It is deployable anywhere ASP.NET Core runs, including containers and serverless environments.
A toolkit to create code-first HTTP reverse proxies on ASP.NET Core
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows defining reverse proxy logic directly in C# as ASP.NET Core middleware, enabling custom routing and header manipulation without external config files, as shown in the README's examples with ForwardContext.
Integrates with ASP.NET Core's dependency injection and uses HttpClientFactory to mitigate DNS caching issues, making it easy to deploy in containers and microservices environments.
Can forward WebSocket connections to upstream servers, which is essential for real-time applications and handled via UseWebSocketProxy with configurable options.
Provides built-in methods like AddXForwardedHeaders and CopyXForwardedHeaders to simplify setup for proxy-aware upstream servers, supporting complex proxy chaining.
The README explicitly marks ProxyKit as obsolescent and recommends migrating to YARP, indicating no future updates or support, which is a major drawback for new projects.
In serverless environments, it buffers messages and may encode binary data as Base64, making it unsuitable for high-performance or non-API proxying in production, as noted in the 'Note about serverless' section.
Currently only supports weighted round-robin load balancing, with other types merely planned, limiting flexibility for complex distribution needs compared to more feature-rich proxies.