_____
/ ____|
| | __ ___ _ __ ___ __ _
| | |_ |/ _ \| '_ ` _ \ / _` |
| |__| | (_) | | | | | | (_| |
\_____|\___/|_| |_| |_|\__,_|
Goma Gateway is a lightweight High-Performance API Gateway Management.
Architecture:
It's designed to be straightforward and efficient, offering a rich set of features, including:
RESTful API Gateway Management
Simplify the management of your API Gateway with powerful tools.
Domain/Host-Based Request Routing
Route requests based on specific domains or hosts.
Multi-Domain Request Routing
Handle requests across multiple domains seamlessly.
Reverse Proxy
Efficiently forward client requests to backend servers.
WebSocket Proxy
Enable real-time communication via WebSocket support.
Cross-Origin Resource Sharing (CORS)
Define and manage cross-origin policies for secure interactions.
Custom Headers
Add and modify headers to meet specific requirements.
Backend Errors Interceptor
Catch and handle backend errors effectively.
Block Common Exploits Middleware
Authentication Middleware
Logging
Comprehensive request and response logging.
Metrics
Gather insights and monitor performance metrics.
Rate Limiting
Load Balancing
Use a round-robin algorithm for efficient load distribution.
Support for Multiple Route and Middleware Configuration Files
Organize routes across multiple .yml
or .yaml
files.
TLS Support
Ensure secure communication with TLS integration.
HTTP Method Restrictions
Limit HTTP methods for specific routes to enhance control.
Define your routes and middleware directly in code for seamless 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
docker run --rm --name goma-gateway \
-v "${PWD}/config:/etc/goma/" \
-p 8080:8080 \
jkaninda/goma-gateway config check --config /etc/goma/config.yml
docker run --rm --name goma-gateway \
-v "${PWD}/config:/etc/goma/" \
-p 8080:8080 \
jkaninda/goma-gateway server
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
/readyz
/healthz
/health/routes
services:
goma-gateway:
image: jkaninda/goma-gateway
command: server
ports:
- "8080:8080"
volumes:
- ./config:/etc/goma/
Please download the binary from the release page.
Init configs:
./goma config init --output config.yml
To run
./goma server --config config.yml
The Goma Gateway project welcomes all contributors. We appreciate your help!
If you like or are using Goma Gateway, please give it a star. Thanks!
Please share.
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
Copyright (c) 2024 Jonas Kaninda