3.8 KiB
3.8 KiB
Goma Gateway - simple lightweight API Gateway Management.
_____
/ ____|
| | __ ___ _ __ ___ __ _
| | |_ |/ _ \| '_ ` _ \ / _` |
| |__| | (_) | | | | | | (_| |
\_____|\___/|_| |_| |_|\__,_|
Goma Gateway is a lightweight API Gateway Management.
Architecture:
Links:
Documentation is found at https://jkaninda.github.io/goma-gateway
Features
It's designed to be straightforward and efficient, offering features, like:
- RESTFull API Gateway management
- Domain/host based request routing
- Multi domain request routing
- Reverse Proxy
- Websocket Proxy
- Cross-Origin Resource Sharing (CORS)
- Custom Headers
- Backend Errors interceptor
- Logging
- Metrics
- Supports Load Balancing, round-robin algorithm
- Support TLS
- Block common exploits middleware
- Patterns to detect SQL injection attempts
- Pattern to detect simple XSS attempts
- Authentication middleware
- JWT
client authorization based on the result of a request - Basic-Auth
- OAuth
- JWT
- Rate limiting
- In-Memory Token Bucket based
- In-Memory client IP based
- Limit HTTP methods allowed for a particular route.
Todo:
- Load Balancing Healthcheck, disable unavailable servers
- Blocklist IP address middleware
- Distributed Rate Limiting for In-Memory client IP based across multiple instances using Redis
Usage
1. Initialize configuration
You can generate the configuration file using config init --output /etc/goma/config.yml command.
The default configuration is automatically generated if any configuration file is not provided, and is available at /etc/goma/goma.yml
docker run --rm --name goma-gateway \
-v "${PWD}/config:/etc/goma/" \
jkaninda/goma-gateway config init --output /etc/goma/goma.yml
2. Run server
docker run --rm --name goma-gateway \
-v "${PWD}/config:/etc/goma/" \
-p 8080:8080 \
jkaninda/goma-gateway server
3. Start server with a custom config
docker run --rm --name goma-gateway \
-v "${PWD}/config:/etc/goma/" \
-p 8080:8080 \
-p 8443:8443 \
jkaninda/goma-gateway server --config /etc/goma/config.yml
4. Healthcheck
- Goma Gateway health check:
/health/live - Routes health check:
health/routes
5. Simple deployment in docker compose file
services:
goma-gateway:
image: jkaninda/goma-gateway
command: server
ports:
- "8080:8080"
volumes:
- ./config:/etc/goma/
Supported Systems
- Linux
- MacOS
- Windows
Deployment
- Docker
- Kubernetes
Contributing
The Goma Gateway project welcomes all contributors. We appreciate your help!
Give a Star! ⭐
If you like or are using Goma Gateway, please give it a star. Thanks!
Please share.
License
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
Copyright
Copyright (c) 2024 Jonas Kaninda