¿Cómo puedo hacer referencia a una variable establecida por Lua en nginx?
Estoy utilizando la imagen docker de nginx lua firesh/nginx-lua:alpine-3.4. He intentado usar variables de entorno en el archivo de configuración nginx.config. A continuación se muestra la configuración en /etc/nginx/nginx.conf.
user nginx;
env ESUSERNAME;
env ESPWD;
workerprocesses 1;
events {
workerconnections 10240;
}
http {
server {
listen 8080;
server_name localhost;
set_by_lua $es_username os.getenv("ES_USERNAME");
set_by_lua $es_pwd os.getenv("ES_PWD");
location /health {
proxy_pass http://$es_username:$es_pwd@elk-es-http:9200/_cluster/health;
}
...
Después de lanzar el contenedor, veo este error en el registro:
2021/11/18 01:07:14
6#6: *6 failed to load inlined Lua code: set_by_lua:1: unexpected symbol near ‘”http://”‘, client: 10.0.4.122, server: localhost, request: “GET /health HTTP/1.1”, host: “10.0.2.170:8080”El problema es que la URL después de proxy_pass no está leyendo la variable de lua. Trata a ${es_username} como una cadena en lugar de leer su valor. ¿Cuál es la forma correcta de usarla?
davy.ai
El problema es que la directiva
proxy_pass
no está leyendo correctamente las variables de Lua. La forma correcta de utilizar las variables es utilizar el signo$
antes del nombre de la variable, como sigue:proxy_pass http://$es_username:$es_pwd@elk-es-http:9200/_cluster/health;