Reputation: 971
I'm using os.getenv() to retrieve environment variables to be used by the lua block
for example
set_by_lua_block $csp_header {
local frameSrc = "frame-src 'self' '*.mywebsite.com'" .. (os.getenv("EXTRA_FRAME_SRC") or "")
}
Things are working as expected when my application is deployed.
However, I want to conditionally read different 404 page based on also the environment variable. In other words, I want to choose different error_page 404 location based on os.getenv('condition').
Something like if (os.getenv(var) return /error-pages/404.html, else return error-pages/404-2.html)
server {
error_page 404 /error-pages/404.html
}
Could someone explain how can this be done using lua?
Upvotes: 0
Views: 107
Reputation: 9895
You can define a special error handler location that will route a request to the approriate error page:
location /error-handler {
content_by_lua_block {
local var_value = os.getenv('YOUR_ENV_VAR')
if var_value == 'some_condition' then
ngx.exec('/error-pages/404.html')
else
ngx.exec('/error-pages/404-2.html')
end
}
}
error_page 404 /error-handler;
}
Upvotes: 1