Current Behavior
When running Apache APISIX in standalone mode, there seems to be an issue with the environment variable substitution mechanism where variables with a common prefix are not correctly recognized. This results in the wrong values being used for certain configuration settings.
For example for configuration (apisix.yaml):
organizations_server:
keepalive_pool: ${{ORGANIZATIONS_SERVER_KEEPALIVE_POOL}}
keepalive_timeout: ${{ORGANIZATIONS_SERVER_KEEPALIVE_TIMEOUT}}
keepalive: ${{ORGANIZATIONS_SERVER_KEEPALIVE}}
and envs:
ORGANIZATIONS_SERVER_KEEPALIVE_POOL=60000
ORGANIZATIONS_SERVER_KEEPALIVE_TIMEOUT=10000
ORGANIZATIONS_SERVER_KEEPALIVE=wrong_value
values for keepalive_pool and keepalive_timeout are incorrectly populated with the value of ORGANIZATIONS_SERVER_KEEPALIVE (i.e., wrong_value).
Expected Behavior
Configuration values should be correctly populated according to their corresponding environment variables based on unique, fully matched variable names.
Error Logs

Steps to Reproduce
- Ensure basic config.yaml and apisix.yaml configurations are set up for APISIX in standalone mode.
- Modify the configuration to reference environment variables that share the same prefix but are intended for different settings. For example, include references to TEST_ENV_CORRECT and TEST_ENV in the configuration as follows:
example_config:
correct_value: ${{TEST_ENV_CORRECT}}
base_value: ${{TEST_ENV}}
- Set the environment variables to different values:
TEST_ENV_CORRECT=expected_value
TEST_ENV=base_value
- Start APISIX.
Environment
- Docker image: apache/apisix:3.8.0-debian
Current Behavior
When running Apache APISIX in standalone mode, there seems to be an issue with the environment variable substitution mechanism where variables with a common prefix are not correctly recognized. This results in the wrong values being used for certain configuration settings.
For example for configuration (
apisix.yaml):and envs:
ORGANIZATIONS_SERVER_KEEPALIVE_POOL=60000ORGANIZATIONS_SERVER_KEEPALIVE_TIMEOUT=10000ORGANIZATIONS_SERVER_KEEPALIVE=wrong_valuevalues for keepalive_pool and keepalive_timeout are incorrectly populated with the value of ORGANIZATIONS_SERVER_KEEPALIVE (i.e.,
wrong_value).Expected Behavior
Configuration values should be correctly populated according to their corresponding environment variables based on unique, fully matched variable names.
Error Logs
Steps to Reproduce
TEST_ENV_CORRECT=expected_valueTEST_ENV=base_valueEnvironment