Nginx robot proxy_pass 更改 url 以将端口传递到另一个端口

Nginx robot proxy_pass 更改 url 以将端口传递到另一个端口

我在 nginx 配置方面遇到了问题。如果用户代理是“robot”,则代理会传递到另一个端口,并将正确的 uri 设置为参数

例如:有两个服务 localhost:5000 和 localhost:6000 端口,所有非机器人都传递到 5000,机器人都传递到 6000,url 如下:

normal https://test.page/test/test -> http://localhost:5000/test/test
robot  https://test.page/test/test -> http://localhost:6000/Page/Get?url=https://test.page/test/test

我尝试这样做:

if ( $http_user_agent ~ 'robot' ) {
                set $request_uri "/Page/Get?url=https://test.page$request_uri";
                proxy_pass http://localhost:6000;
            }
            if ( $http_user_agent !~ 'robot' ) {
                proxy_pass http://localhost:5000;
            }

但机器人得到了 404

答案1

map是执行这些条件操作的更好方法。http在 nginx 配置级别中添加以下内容:

map $http_user_agent $upstream {
    ~robot "localhost:6000/Page/Get?url=https://test.page$request_uri";
    default localhost:5000$request_uri;
}

然后用作$upstream目标:

proxy_pass http://$upstream;

相关内容