# willnorris/imageproxy

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/willnorris-imageproxy).**

3,971 stars · 506 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/willnorris/imageproxy
- awesome-repositories: https://awesome-repositories.com/repository/willnorris-imageproxy.md

## Topics

`imageproxy`

## Description

Imageproxy is a Go-based image proxy server that fetches, resizes, and caches remote images. It functions as a secure gateway for delivering external image assets, providing dynamic image resizing and transformation via URL parameters.

The server implements security controls to prevent proxy abuse and unauthorized hotlinking. These include request signature verification using HMAC, allow-list based source filtering for remote hosts, and referrer restrictions. It also utilizes MIME-type content filtering to ensure only supported file formats are processed.

The project includes a caching layer to store processed images in memory, on local disk, or via cloud storage providers. It supports dynamic image transformations, including adjusting dimensions, cropping, rotating, and flipping assets on the fly.

## Tags

### Graphics & Multimedia

- [Programmatic Resizing and Cropping](https://awesome-repositories.com/f/graphics-multimedia/image-editing-processing/image-editors/image-cropping-tools/programmatic-resizing-and-cropping.md) — Provides programmatic image resizing and cropping through a proxy layer using API-driven parameters.
- [URL-Driven Image Transformations](https://awesome-repositories.com/f/graphics-multimedia/url-driven-image-transformations.md) — Adjusts image dimensions, crops, rotates, and flips assets dynamically via parameters in the request URL. ([source](https://cdn.jsdelivr.net/gh/willnorris/imageproxy@main/README.md))
- [Processed Image Caching](https://awesome-repositories.com/f/graphics-multimedia/processed-image-caching.md) — Stores generated image variants in memory, on disk, or in the cloud to avoid redundant processing. ([source](https://cdn.jsdelivr.net/gh/willnorris/imageproxy@main/README.md))

### Part of an Awesome List

- [On-the-Fly Transformations](https://awesome-repositories.com/f/awesome-lists/media/image-manipulation/on-the-fly-transformations.md) — Performs image resizing and cropping in memory during the request-response cycle.

### Data & Databases

- [Image Proxy Caches](https://awesome-repositories.com/f/data-databases/file-storage-and-metadata-management/image-transformations/image-transformation-proxies/image-proxy-caches.md) — Caches processed versions of remote images locally to reduce bandwidth and improve page load speeds.
- [Image Caches](https://awesome-repositories.com/f/data-databases/in-memory-caches/image-caches.md) — Implements a caching layer for image data with configurable storage backends to reduce latency.

### Networking & Communication

- [Image Processing Servers](https://awesome-repositories.com/f/networking-communication/http-clients/http-servers/image-processing-servers.md) — Operates as an HTTP server that fetches, resizes, and caches remote images via URL parameters.
- [Content-Type Filtering](https://awesome-repositories.com/f/networking-communication/content-type-filtering.md) — Inspects response headers to ensure only supported image MIME types are processed by the proxy.

### Security & Cryptography

- [Request Signature Verification](https://awesome-repositories.com/f/security-cryptography/authentication-and-authorization/request-signature-verification.md) — Verifies the integrity and authenticity of requests using cryptographic signatures to prevent unauthorized proxy usage. ([source](https://cdn.jsdelivr.net/gh/willnorris/imageproxy@main/README.md))
- [Secure Image Delivery](https://awesome-repositories.com/f/security-cryptography/code-signing/secure-image-delivery.md) — Protects image processing services from abuse using signed URLs and domain restrictions.
- [Domain Allow-Lists](https://awesome-repositories.com/f/security-cryptography/domain-allow-lists.md) — Implements security controls that validate remote hosts against a trusted list before fetching images.
- [Request Signing](https://awesome-repositories.com/f/security-cryptography/identity-authentication/user-identity-verification/hmac-user-identity-verifications/request-signing.md) — Uses HMAC-based cryptographic signatures in URLs to verify the authenticity of transformation requests.
- [Remote Source Restrictions](https://awesome-repositories.com/f/security-cryptography/remote-source-restrictions.md) — Limits external hosts the proxy can fetch images from using allow-lists and deny-lists. ([source](https://cdn.jsdelivr.net/gh/willnorris/imageproxy@main/README.md))
- [Asset Proxy Security](https://awesome-repositories.com/f/security-cryptography/security-proxies/asset-proxy-security.md) — Prevents unauthorized access and hotlinking using request signing and referrer restrictions.
- [Referrer-Based Access Control](https://awesome-repositories.com/f/security-cryptography/referrer-based-access-control.md) — Blocks requests not originating from a list of trusted HTTP referrers to prevent unauthorized hotlinking. ([source](https://cdn.jsdelivr.net/gh/willnorris/imageproxy@main/README.md))

### Web Development

- [Transformation Parameters](https://awesome-repositories.com/f/web-development/url-parameter-extraction/transformation-parameters.md) — Parses request path parameters to determine the specific scaling, cropping, and rotation operations to apply.
- [Pluggable Cache Backends](https://awesome-repositories.com/f/web-development/content-caching-accelerators/object-caches/pluggable-cache-backends.md) — Provides a pluggable interface for caching processed images in memory, on disk, or in cloud storage.

### Software Engineering & Architecture

- [Dynamic Asset Delivery](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/frontend-rendering-loading/asset-delivery-optimization/dynamic-asset-delivery.md) — Optimizes the delivery of processed images through a secure gateway and caching layer for faster response times.
