nginx:[emerg]此处不允许使用“stream”指令

nginx:[emerg]此处不允许使用“stream”指令

我在 Ubuntu 16.04 上安装了 ppa 的最新 NGINX。

nginx 版本:nginx/1.12.1

据我了解,它应该支持流和 UDP 负载平衡。

但我收到此错误信息:

nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/conf.d/load-balancer.conf:3

这是我的配置/etc/nginx/conf.d/load-balancer.conf

stream {
        upstream backend {
                least_conn;
                server 172.31.9.51 fail_timeout=10s;
                server 172.31.20.140 fail_timeout=10s;
        }

        server {
                listen          500 udp;
                listen          4500 udp;
                proxy_pass      backend;
                proxy_timeout   1s;
                proxy_responses 1;
                error_log       logs/dns.log;
        }
}

答案1

流需要与 http 块处于同一级别,因此

http { foo }
stream { bar }

我猜你的包含/etc/nginx/conf.d/*.conf位于http {}块中而不是块外。检查 /etc/nginx/nginx.conf 中的包含,也许你必须为流部分创建一个新的

答案2

我在使用默认 Docker 镜像时遇到了同样的错误nginx,我尝试通过对 DockerFile 进行小幅修改来解决这个问题:

COPY docker/ngnix/ngnix.conf /tmp/docker.nginx
COPY docker/ngnix/stream.conf /etc/nginx/stream.conf
RUN envsubst '$RAILS_ROOT','$DOMAIN' < /tmp/docker.nginx > /etc/nginx/conf.d/default.conf
RUN echo 'include /etc/nginx/stream.conf;' >> /etc/nginx/nginx.conf

流配置文件

stream{
  server{ 
    ...  
  }
}

我即将查明此版本是否是nginx使用流模块构建的......

附言部署没有错误

+1 我通过 LoadBalancer 和反向代理从我的终端连接到 AWS 上 Kubernetes 上的 Postgres!现在,SSL...

相关内容