一个 http 协议和一个 https 协议的上游

大家好! 在设置 openresty 时,我遇到了一个问题,请帮忙。 我有:openresty + lua。 Openresty 配置:

upstream a {
   server 1.1.8.1:4707;
}

upstream c {
   server 1.1.8.1:4707;
}
server {
location / {
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Url-Scheme $scheme;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;
   proxy_redirect off;
   proxy_ssl_verify off;
   if ($request_method = POST ) {
   set $upstream '';
   access_by_lua '
   ngx.req.read_body()
   local  match0 = ngx.re.match(ngx.var.request_body, "aaa.*")
   local  match1 = ngx.re.match(ngx.var.request_body, "bbb.*")
   if match0 then
      ngx.var.upstream = "a"
   else
      ngx.var.upstream = "c"
   end
   ';
   proxy_pass http://$upstream;
   }
}
}

目标:根据传递的请求方法将请求分配到不同的上游。请求以 json-rpc 格式发送。 问题:我有两个上游。一个上游通过 http 协议可用,另一个通过 https 协议可用,我遇到的问题是在同一时间只有一个上游可以工作。 即使您创建单独的相似配置,也只有其中一个可用且仅有一个会工作。 如果有人遇到过,请帮帮忙。 怎样指定可通过不同协议访问的多个上游?或者我没有正确地注册配置? 即使在 openresty 设置中指定了代理_ssl_验证关闭的指令,也无济于事。 提前感谢。

点赞
用户2060502
用户2060502

请查看我的答案:https://stackoverflow.com/a/64331014/2060502

您可以使用不同的上游和代理_*指令配置两个内部位置,并通过ngx.exec() Lua API进行内部重定向,最好在rewrite_by_lua_block上下文中进行。

2020-10-28 19:40:58