Nginx config无效参数,即使它在文档中

Rya*_*yan 2 nginx nginx-config

我正在尝试使用以下配置运行nginx最新版本,但我得到了 nginx: [emerg] invalid parameter "route=bloomberg" in /etc/nginx/nginx.conf:13

docker run --rm -ti -v root_to_local_nginx_directory:/etc/nginx:ro -p 3080:80  --name=mynginx --entrypoint nginx  nginx
Run Code Online (Sandbox Code Playgroud)
    # nginx.conf file inside root_to_local_nginx_directory
    http {
        map $cookie_route $route_from_cookie {
            ~.(?P<version>w+)$ $route;
        }

        split_clients "${remote_addr}" $random_route {
            50%     server bloomberg.com route=bloomberg;
            *       server yahoo.com route=yahoo;
        }

        upstream backend {
            zone backend 64k;
            server bloomberg.com route=bloomberg;
            server yahoo.com route=yahoo;

            sticky route $route_from_cookie $randomroute;
        }

        server {
            # ...
            listen 80;
            location / {
                proxy_set_header Host $host;
                proxy_pass http://backend;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么是这样?根据文档,这应该是正确的http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream

cns*_*nst 5

该指令在上下文中的route=string参数被认为是企业级功能,因此只能通过商业订阅获得,在NGINX Plus中,而在OSS NGINX中不可用。(如果您仔细阅读文档,您会发现它与其他参数归为一个单独的“可作为我们的商业订阅的一部分”小节。)serverupstream

另外,您还试图在split_clients上下文中使用一些类似的“服务器”参数,就好像它们是nginx解释的实际指令一样,即使在该上下文中所有内容都应为字符串文字。尚不清楚该部分是否引起任何错误,但即使不是,也很难在配置中引入这种混淆。

参考文献: