https://github.com/tamper000/caching-proxy
Simple caching server to reduce the load on your APIs
https://github.com/tamper000/caching-proxy
cache caching-proxy go golang
Last synced: 12 months ago
JSON representation
Simple caching server to reduce the load on your APIs
- Host: GitHub
- URL: https://github.com/tamper000/caching-proxy
- Owner: tamper000
- License: mit
- Created: 2025-07-08T16:06:50.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-12T17:19:21.000Z (12 months ago)
- Last Synced: 2025-07-12T19:23:57.813Z (12 months ago)
- Topics: cache, caching-proxy, go, golang
- Language: Go
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🧠 Caching Proxy
[](https://opensource.org/licenses/MIT)
[English](README-en.md)
**Caching HTTP proxy server written in Go**
Простой кеширующий прокси-сервер, который перенаправляет запросы на удалённый сервер и кэширует результат.
> Идеально подходит для уменьшения нагрузки на внешние API путём кэширования ответов с возможностью гибкой настройки через YAML-конфигурацию.
---
## 📌 Особенности
- Прозрачное кэширование HTTP-запросов
- Поддержка Redis в качестве хранилища кэша
- Гибкая настройка через YAML-файл
- Возможность указать blacklist URL-путей, которые не нужно кэшировать
- Очистка кэша по секретному ключу
---
## ⚙️ Установка и запуск
### 1. Локальный запуск
```bash
go run cmd/main.go
```
Убедись, что конфигурационный файл `config.yaml` находится в корне проекта и имеет правильную конфигурацию.
### 2. Запуск через Docker
Собери образ (если нужно):
```bash
docker build -t caching-proxy .
```
Запусти контейнер:
```bash
docker run -p 8080:8080 -v $(pwd)/config.yaml:/app/config.yaml caching-proxy
```
---
## 📄 Конфигурация
Конфигурация осуществляется через файл `config.yaml`.
### Пример конфигурации:
```yaml
server:
origin: https://httpbin.org/ # Базовый URL, куда будут перенаправляться запросы
# port: 1323 # Порт (по умолчанию: 8080)
secret: pls_delete_cache_maboy # Секрет для очистки кэша
redis:
addr: localhost # Адрес Redis
port: 6379 # Порт Redis
password: # Пароль (если используется)
db: # Номер базы данных
TTL: 5 # Время жизни кэша в минутах
blacklist:
- /uuid # Эти пути не будут кэшироваться
- /delay/(.+) # Поддерживает regexp
logger:
level: DEBUG # Сейчас поддерживает только DEBUG и INFO
file: app.log
```
---
## 🧪 Использование
После запуска сервис доступен по адресу:
```
http://localhost:8080/
```
Все запросы перенаправляются на указанный `origin` (`https://httpbin.org/` в данном случае), а результаты кэшируются.
### Пример использования:
```bash
curl http://localhost:8080/ip
```
### Очистка кэша
Для очистки кэша отправь POST-запрос с секретным ключом:
```bash
curl -X POST http://localhost:8080/clear?secret=pls_delete_cache_maboy
```
---
## 📁 Формат черного списка (Blacklist)
Поддерживаются простые строки и регулярные выражения:
```yaml
blacklist:
- /uuid
- /delay/(.+)
```
---
## 🏷 Статус кэширования (X-Cache)
При каждом ответе добавляется заголовок `X-Cache`, показывающий статус кэширования:
| Значение | Описание |
|--------------|-----------------------------------------------|
| `MISS` | Данные не были закэшированы, запрос выполнен напрямую |
| `HIT` | Ответ взят из кэша |
| `BYPASS` | Запрос был исключен из кэширования (через blacklist) |
---
## 📦 Технологии
- Golang
- Redis
- YAML для конфигурации
- Docker
---
## 🧾 Лицензия
MIT License — см. [LICENSE](LICENSE) для деталей.