在 nginx.conf 中使用 postgres_set 时出现的重复变量声明问题

我刚接触 openResty,我的问题可能看起来很简单,但我仍然需要有关"postgres_set" 指令的一些建议和解决此问题:

一旦我在我的 nginx.conf 的两个完全不同的位置定义一个由 "postgres_set" 指令设置值的变量,我就会收到 Nginx 发出的错误。

nginx: [emerg] the duplicate "VAR" variable .....

相反,使用 set $var 1 ,不会引起任何错误。 什么是使用 postgres_set 在位置内定义的变量的作用域范围?

提前致谢

nginx 版本: openresty/1.19.9.1 操作系统:cat /etc/debian_version 10.11

这里是我的 nginx.conf 文件:

worker_processes 2;

events {}
http {
    variables_hash_bucket_size 4096;

    upstream database {
        postgres_server  host.docker.internal  dbname=test user=postgres password=;
        postgres_keepalive max=200 overflow=ignore;
    }

    server {
        listen       8080;

        location  /loc1 {

                        postgres_pass database;
                        postgres_output text;
                        postgres_query
                        GET  "SELECT 1";
                        postgres_set $var 0 0 optional;
                        #set $var "1";
                        postgres_rewrite no_rows 404;
                        postgres_rewrite GET rows 200;

        }

        location  /loc2 {

                        postgres_pass database;
                        postgres_output text;
                        postgres_query
                        GET  "SELECT 1";
                        postgres_set $var 0 0 optional;
                        #set $var "1";
                        postgres_rewrite no_rows 404;
                        postgres_rewrite GET rows 200;
        }

    }
}

原文链接 https://stackoverflow.com/questions/70436535

点赞