es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  ,

Answer

  1. Avatar for 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;

Comments are closed.