license: Add MIT license
This commit is contained in:
105
README.md
105
README.md
@@ -1 +1,104 @@
|
||||
# SecNex API Gateway
|
||||
# SecNex API Gateway
|
||||
|
||||

|
||||

|
||||
|
||||
A high-performance, configurable API gateway built in Go with chi/v5 routing. Provides reverse proxy capabilities with path-based routing, prefix stripping, and structured logging.
|
||||
|
||||
## Features
|
||||
|
||||
- **Reverse Proxy** - Route requests to backend services via HTTP reverse proxy
|
||||
- **Path-based Routing** - Configurable route patterns with chi/v5 router
|
||||
- **Prefix Stripping** - Remove path prefixes before forwarding to backends
|
||||
- **Host-based Routing** - Virtual hosting support via host headers
|
||||
- **Middleware Pipeline** - Extensible middleware chain (request ID, real IP, logging)
|
||||
- **Structured Logging** - JSON logging with sensitive field pseudonymization
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://git.secnex.io/secnex/gateway.git
|
||||
cd gateway/app
|
||||
|
||||
# Run the gateway
|
||||
go run main.go
|
||||
```
|
||||
|
||||
The gateway loads configuration from `../gateway.yaml` and starts on the configured host/port (default: `0.0.0.0:8080`).
|
||||
|
||||
## Health Check
|
||||
|
||||
```bash
|
||||
curl http://localhost:8080/_/health
|
||||
```
|
||||
|
||||
Returns `200 OK` when the gateway is running.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Documentation](https://git.secnex.io/secnex/gateway/-/tree/main/.docs)
|
||||
- [Architecture](https://git.secnex.io/secnex/gateway/-/blob/main/.docs/architecture.md)
|
||||
- [Configuration](https://git.secnex.io/secnex/gateway/-/blob/main/.docs/configuration.md)
|
||||
- [Usage](https://git.secnex.io/secnex/gateway/-/blob/main/.docs/usage.md)
|
||||
- [Development](https://git.secnex.io/secnex/gateway/-/blob/main/.docs/development.md)
|
||||
- [Deployment](https://git.secnex.io/secnex/gateway/-/blob/main/.docs/deployment.md)
|
||||
|
||||
## Example Configuration
|
||||
|
||||
```yaml
|
||||
gateway:
|
||||
host: "0.0.0.0"
|
||||
port: 8080
|
||||
features:
|
||||
- request_id
|
||||
- real_ip
|
||||
- logger
|
||||
- host
|
||||
|
||||
hosts:
|
||||
- id: "host-001"
|
||||
name: "localhost"
|
||||
domain: "localhost:8080"
|
||||
|
||||
targets:
|
||||
- id: "target-001"
|
||||
name: "httpbin"
|
||||
url: "https://httpbin.org"
|
||||
|
||||
apis:
|
||||
- id: "api-001"
|
||||
host: "host-001"
|
||||
target: "target-001"
|
||||
|
||||
routes:
|
||||
- id: "route-001"
|
||||
api: "api-001"
|
||||
path: "/api/v1/*"
|
||||
strip_prefix:
|
||||
enabled: true
|
||||
prefix: "/api/v1"
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
app/
|
||||
├── main.go # Entry point
|
||||
├── config/ # Configuration loading
|
||||
├── server/ # Gateway, routes, proxy
|
||||
├── middlewares/ # HTTP middleware
|
||||
└── utils/ # Utility functions
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Go 1.25.5 or later
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
---
|
||||
|
||||
Made with ❤️ by [SecNex](https://secnex.io)
|
||||
|
||||
Reference in New Issue
Block a user