mirror of
https://github.com/sablierapp/sablier.git
synced 2025-12-21 13:23:03 +01:00
* feat(plugin): add `proxywasm` plugin The `proxywasm` plugin is a WASM Filter following the ProxyWasm ABI Specification using the proxywasm go sdk This allows extensibility with any reverse proxy who implements the ProxyWasm ABI Specification. The current WASM Filter was successfully tested with APISIX, Envoy, Nginx with ngx_wasm_module from Kong and Istio. Fixes #145
62 lines
2.7 KiB
Nginx Configuration File
62 lines
2.7 KiB
Nginx Configuration File
# nginx.conf
|
|
events {}
|
|
|
|
# nginx master process gets a default 'main' VM
|
|
# a new top-level configuration block receives all configuration for this main VM
|
|
wasm {
|
|
module proxywasm_sablier_plugin /wasm/sablierproxywasm.wasm;
|
|
}
|
|
|
|
error_log /dev/stdout info;
|
|
|
|
# each nginx worker process is able to instantiate wasm modules in its subsystems
|
|
http {
|
|
access_log /dev/stdout;
|
|
|
|
# internal docker resolver, see /etc/resolv.conf on proxy container
|
|
resolver 127.0.0.11 valid=1s ipv6=off;
|
|
|
|
server {
|
|
listen 8080;
|
|
|
|
location /dynamic/whoami {
|
|
proxy_wasm proxywasm_sablier_plugin '{ "sablier_url": "sablier:10000", "names": ["docker_classic_e2e-whoami-1"], "session_duration": "1m", "dynamic": { "display_name": "Dynamic Whoami", "theme": "hacker-terminal" } }';
|
|
|
|
set $proxy_pass_host whoami:80$request_uri;
|
|
proxy_pass http://$proxy_pass_host;
|
|
proxy_set_header Host localhost:8080; # e2e test compliance
|
|
}
|
|
|
|
location /blocking/whoami {
|
|
wasm_socket_read_timeout 60s; # Blocking hangs the request
|
|
proxy_wasm proxywasm_sablier_plugin '{ "sablier_url": "sablier:10000", "names": ["docker_classic_e2e-whoami-1"], "session_duration": "1m", "blocking": { "timeout": "30s" } }';
|
|
|
|
set $proxy_pass_host whoami:80$request_uri;
|
|
proxy_pass http://$proxy_pass_host;
|
|
proxy_set_header Host localhost:8080; # e2e test compliance
|
|
}
|
|
|
|
location /multiple/whoami {
|
|
proxy_wasm proxywasm_sablier_plugin '{ "sablier_url": "sablier:10000", "names": ["docker_classic_e2e-whoami-1", "docker_classic_e2e-nginx-1"], "session_duration": "1m", "dynamic": { "display_name": "Multiple Whoami" } }';
|
|
|
|
proxy_pass http://whoami:80$request_uri;
|
|
proxy_set_header Host localhost:8080; # e2e test compliance
|
|
}
|
|
|
|
location /multiple/nginx {
|
|
proxy_wasm proxywasm_sablier_plugin '{ "sablier_url": "sablier:10000", "names": ["docker_classic_e2e-whoami-1", "docker_classic_e2e-nginx-1"], "session_duration": "1m", "dynamic": { "display_name": "Multiple Whoami" } }';
|
|
|
|
set $proxy_pass_host nginx:80$request_uri;
|
|
proxy_pass http://$proxy_pass_host;
|
|
proxy_set_header Host localhost:8080; # e2e test compliance
|
|
}
|
|
|
|
location /healthy/nginx {
|
|
proxy_wasm proxywasm_sablier_plugin '{ "sablier_url": "sablier:10000", "names": ["docker_classic_e2e-nginx-1"], "session_duration": "1m", "dynamic": { "display_name": "Healthy Nginx" } }';
|
|
|
|
set $proxy_pass_host nginx:80$request_uri;
|
|
proxy_pass http://$proxy_pass_host;
|
|
proxy_set_header Host localhost:8080; # e2e test compliance
|
|
}
|
|
}
|
|
} |