文档地址: 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
方法来做,有没有什么办法解决这个问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.