リクエストのヘッダーに依存するプラグインを設定し、特定のホストにプロキシをプロキシしようとしています。 Ex。これは、ngx.ctx.upstream_urlによる働いKong APIゲートウェイv0.11.0 upstream_url
local singletons = require "kong.singletons"
local responses = require "kong.tools.responses"
local _M = {}
function _M.execute(conf)
local environment = ngx.req.get_headers()['Env']
if environment then
local result, err = singletons.dao.environments:find_all {environment = environment}
if err then
return responses.send_HTTP_INTERNAL_SERVER_ERROR(err)
else
ngx.ctx.upstream_url = result[1].proxy_redirect
end
end
end
return _M
:初期のバージョン(< v0.11.0)次のコードでは、働いていた(これはプラグインの私達のaccess.luaファイルである)で
curl -H 'Env: foo' http://127.0.0.1:8000/poc -> https://foo.example.com/poc
curl -H 'Env: bar' http://127.0.0.1:8000/poc -> https://bar.example.com/poc
がproxy_pass動作を上書きしました。
k8s環境で使用したいので、dnsに関するいくつかの問題を修正したので、0.11.0バージョンを使用しなければなりませんでした。問題はそれらが変更されているように思われるngx.ctx.upstream_urlによってngx.var.upstream_uri、しかし行動は同じではない、私たちの要求を代理するホストを変更しません。これはエラーです:
2017/08/23 11:28:51 [error] 22#0: *13 invalid port in upstream "kong_upstreamhttps://foo.example.com", client: 192.168.64.1, server: kong, request: "GET /poc HTTP/1.1", host: "localhost:8000"
誰も同じ問題がありますか?私たちの問題に他の解決策がありますか?
ありがとうございます。