Skip to main content
Version: Next

proxy-mirror

The proxy-mirror plugin, which provides the ability to mirror client requests.

Note: The response returned by the mirror request is ignored.

Attributes#

NameTypeRequirementDefaultValidDescription
hoststringrequiredSpecify a mirror service address, e.g. http://127.0.0.1:9797 (address needs to contain scheme: http or https, and without the path part)
sample_rationumberoptional1[0.00001, 1]the sample ratio that requests will be mirrored.

Examples#

Enable the plugin#

example 1: enable the proxy-mirror plugin for a specific route :

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{    "plugins": {        "proxy-mirror": {           "host": "http://127.0.0.1:9797"        }    },    "upstream": {        "nodes": {            "127.0.0.1:1999": 1        },        "type": "roundrobin"    },    "uri": "/hello"}'

Test plugin:

$ curl http://127.0.0.1:9080/hello -iHTTP/1.1 200 OKContent-Type: application/octet-streamContent-Length: 12Connection: keep-aliveServer: APISIX web serverDate: Wed, 18 Mar 2020 13:01:11 GMTLast-Modified: Thu, 20 Feb 2020 14:21:41 GMT
hello world

Since the specified mirror address is 127.0.0.1:9797, so to verify whether this plugin is in effect, we need to confirm on the service with port 9797. For example, we can start a simple server: python -m SimpleHTTPServer 9797

Disable Plugin#

Remove the corresponding JSON in the plugin configuration to disable the plugin immediately without restarting the service:

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{    "uri": "/hello",    "plugins": {},    "upstream": {        "type": "roundrobin",        "nodes": {            "127.0.0.1:1999": 1        }    }}'

The plugin has been disabled now.