docker-oidc-proxy
apisix
docker-oidc-proxy | apisix | |
---|---|---|
1 | 67 | |
121 | 14,277 | |
0.8% | 1.6% | |
0.0 | 9.3 | |
about 1 year ago | 9 days ago | |
Lua | Lua | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
docker-oidc-proxy
apisix
-
Guarding Your APIs: Mastering WAF and API Gateway Integration
Apache APISIX on GitHub
-
Mastering Web Security: How to Set Up and Test SafeLine with APISIX
APISIX:https://github.com/apache/apisix
-
Random and fixed routes with Apache APISIX
My ideas for blog posts inevitably start to dry up after over two years at Apache APISIX. Hence, I did some triage on the APISIX repo. I stumbled upon this one question:
-
Ask HN: Are there any open source forks of nomad smd consul?
> I think etcd is basically a k8s only project now
I hate etcd with the best of them, but etcd is used in a lot more places than just kubernetes:
https://github.com/apache/apisix/blob/master/docs/en/latest/...
https://github.com/traefik/traefik#:~:text=Etcd,
https://github.com/zalando/patroni#patroni-a-template-for-po...
https://github.com/purpleidea/mgmt/tree/0.0.26/etcd (this one shows up on HN quite a bit)
https://github.com/sorintlab/stolon#features
It's actually one of the major reasons I wouldn't touch those projects
-
Multi-layer Caching in API Gateway Tackles High Traffic Challenges
Through this intelligent caching mechanism, APISIX efficiently utilizes system resources when handling a large volume of requests, thereby improving overall system performance and stability. APISIX, with its advanced LRU cache, provides developers with a reliable and efficient API gateway solution, facilitating smooth communication with external services.
-
Apache APISIX plugin priority, a leaky abstraction?
The main issue is that priority is documented in the config-default.yaml file, while the phase is buried in the code. Worse, some plugins run across different phases. For example, let's check the proxy proxy-rewrite plugin and, more precisely, the functions defined there:
-
A "Tiny" APISIX Plugin
// references: // https://github.com/tetratelabs/proxy-wasm-go-sdk/tree/main/examples // https://github.com/apache/apisix/blob/master/t/wasm/ package main import ( "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm" "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm/types" "github.com/valyala/fastjson" ) func main() { proxywasm.SetVMContext(&vmContext{}) } // each plugin has its own VMContext. // it is responsible for creating multiple PluginContexts for each route. type vmContext struct { types.DefaultVMContext } // each route has its own PluginContext. // it corresponds to one instance of the plugin. func (*vmContext) NewPluginContext(contextID uint32) types.PluginContext { return &pluginContext{} } type header struct { Name string Value string } type pluginContext struct { types.DefaultPluginContext Headers []header } func (ctx *pluginContext) OnPluginStart(pluginConfigurationSize int) types.OnPluginStartStatus { data, err := proxywasm.GetPluginConfiguration() if err != nil { proxywasm.LogErrorf("error reading plugin configuration: %v", err) return types.OnPluginStartStatusFailed } var p fastjson.Parser v, err := p.ParseBytes(data) if err != nil { proxywasm.LogErrorf("error decoding plugin configuration: %v", err) return types.OnPluginStartStatusFailed } headers := v.GetArray("headers") ctx.Headers = make([]header, len(headers)) for i, hdr := range headers { ctx.Headers[i] = header{ Name: string(hdr.GetStringBytes("name")), Value: string(hdr.GetStringBytes("value")), } } return types.OnPluginStartStatusOK } // each HTTP request to a route has its own HTTPContext func (ctx *pluginContext) NewHttpContext(contextID uint32) types.HttpContext { return &httpContext{parent: ctx} } type httpContext struct { types.DefaultHttpContext parent *pluginContext } func (ctx *httpContext) OnHttpResponseHeaders(numHeaders int, endOfStream bool) types.Action { plugin := ctx.parent for _, hdr := range plugin.Headers { proxywasm.ReplaceHttpResponseHeader(hdr.Name, hdr.Value) } return types.ActionContinue }
-
10 Reasons for Choosing API7
API7 takes Apache APISIX as its robust foundation, which is open-source and has an active community with over 600 contributors all over the world. The nature of open source allows users to examine the source code, which promotes transparency. This transparency helps users understand how APISIX works, verify its security, and identify and fix any potential vulnerabilities or bugs.
-
How is Apache APISIX Fast?
But the best part is that the libraries mentioned here and Apache APISIX are entirely open source, meaning you can look under the hood and modify things yourself.
-
Ops friendly Apache APISIX
Default configuration
What are some alternatives?
colima-blog - Testing scripts for my blog post.
Kong - 🦍 The Cloud-Native API Gateway and AI Gateway.
docker-dst-server - Don't Starve Together dedicated server in Docker!
haproxy-lua-http - Simple Lua HTTP helper && client for use with HAProxy.
emissary - open source Kubernetes-native API gateway for microservices built on the Envoy Proxy
nginx-proxy-automation - Automated docker nginx proxy integrated with letsencrypt.
envoy - Cloud-native high-performance edge/middle/service proxy
docker-php-nginx - Docker image with PHP-FPM 8.3 & Nginx 1.26 on Alpine Linux
lua-resty-auto-ssl - On the fly (and free) SSL registration and renewal inside OpenResty/nginx with Let's Encrypt.
tyk-operator - Tyk Operator for Kubernetes
gloo - The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy