我有一种情况,我希望 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;
}
}