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

Hou*_*man 19 nginx load-balancing udp ubuntu-16.04

我在 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
Run Code Online (Sandbox Code Playgroud)

这是我的配置 /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;
        }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 41

流需要与 http 块处于同一级别,例如

http { foo }
stream { bar }
Run Code Online (Sandbox Code Playgroud)

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

  • 有趣的是,默认的 `nginx` Docker 镜像正是这样做的:“我猜你对 /etc/nginx/conf.d/*.conf 的包含位于 http {} 块中,而不是在它之外。”。所以在那个 Docker 镜像中,你不能使用 `/etc/nginx/conf.d/*.conf` 来添加 `stream` 指令。 (2认同)