没有“主”proxy_pass 的 Nginx 镜像

没有“主”proxy_pass 的 Nginx 镜像

我有一种情况,我希望 nginx 将查询 proxy_pass 到后端并将其镜像到一个或多个站点。

这很简单,只需像这样的配置

server {
        server_name mydomain.tld;
        listen 80;

        location /my/endpoint {
                mirror /mirror;
                proxy_pass http://mainbackend;
        }

        location /mirror {
                internal;
                proxy_pass http://mirrorbackend$request_uri;
        }
}

但是,主后端尚未准备好,我希望 nginx 镜像查询并以 200 响应。

我尝试了以下方法(以及几种变体,因为它们不起作用)

server {
        server_name mydomain.tld;
        listen 80;

        location /my/endpoint {
                mirror /mirror;
                # proxy_pass http://mainbackend;
                return 200;
        }

        location /mirror {
                internal;
                proxy_pass http://mirrorbackend$request_uri;
        }
}

这样做的话,nginx 确实返回了 200,但是镜像不起作用。

我真的希望 nginx 返回 200 而不是 mirrorbackend 响应,因为它是一个可能启动或关闭的测试服务器,其状态不应影响给出的响应。

可以做到吗?我该怎么做?

答案1

虽然不漂亮,但很管用

server {
    server_name mydomain.tld;
    listen 80;

    location /my/endpoint {
            mirror /mirror;
            proxy_pass http://mydomain.tld/OK/;
    }

    location /mirror {
            internal;
            proxy_pass http://mirrorbackend$request_uri;
    }

    location /OK/{
            return 200;
    }
 }

相关内容