0

我有一个 nGINX 服务器正在运行。我想从传入的请求中读取自定义 HTTP 标头并将其重定向到不同的应用程序服务器。我确实搜索了类似的问题,但发现用于编写自定义标题而不是如何阅读..

如果标头设置为 -> "version = Version 1.0" 那么它应该重定向不同的应用程序(比如 uwsgi_pass xxxx:80)

如果它设置为“版本 = 版本 2.0”,那么它应该重定向到 (uwsgi_pass xxxx:99)

我在我的 nginx.conf 文件中尝试过

server{
        listen 80;
        server_name xyz.com;

        if ($http_version ~ 'Version 1.0') {
            proxy_pass http://192.168.0.116:99/calc;
        }

        if ($http_version ~ 'Version 2.0') {
                proxy_pass http://192.168.0.116:99;
        }


    location /hello {
        proxy_pass http://192.168.0.116:99/calc;
            }

        }   

重新启动 nGINX 时出现错误

nginx: [emerg] "proxy_pass" directive is not allowed here in /etc/nginx/nginx.conf:19
nginx: configuration file /etc/nginx/nginx.conf test failed
4

1 回答 1

1

假设您以这种形式设置自定义标题:

version: Version 1.0

然后你可以像这样配置nginx:

location / {
    if ($http_version ~ 'Version 1.0') {
        uwsgi_pass localhost:8888;
    }

    if ($http_version ~ 'Version 2.0') {
        uwsgi_pass localhost:9999;
    }
}

参考:http ://wiki.nginx.org/HttpCoreModule#.24http_HEADER

于 2012-09-14T07:11:02.700 回答