文档地址: https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/balancer.md#set_current_peer
syntax: ok, err = balancer.set_current_peer(host, port)
context: balancer_by_lua*
Sets the peer address (host and port) for the current backend query (which may be a retry).
Domain names in host do not make sense. You need to use OpenResty libraries like lua-resty-dns to obtain IP address(es) from all the domain names before entering the balancer_by_lua* handler (for example, you can perform DNS lookups in an earlier phase like access_by_lua* and pass the results to the balancer_by_lua* handler via ngx.ctx.
按照正常 nginx 的逻辑,upstream 中是可以写域名的。此处 OpenResty 文档说不能写域名,但是可以用 DNS 把域名的 IP 解析出来。
解析 IP 的方式在明显不符合需求,假如我有个 test.com
的域名,指向了某个 IP 。这个 IP 是个 nginx,根据 server_name 来区分请求。如果是通过 IP 转发过来的请求,请求头里边是没有 Host
的,所以请求并不能正常转发。
目前不考虑使用 recreate_request
方法来做,有没有什么办法解决这个问题?
1
mekingname 2021-04-12 15:00:18 +08:00
我是遇到连接 Redis 的时候无法使用域名。
|