2017-08-23 14 views
0

openrestyを使用して、私はhttps://github.com/openresty/lua-nginx-module/issues/220プロキシパスの後にhttpリクエストを発行するにはどうすればよいですか? (Luaの+のnginxの)

私はproxy_passを使用して、リモートサーバにファイルを転送してい

  1. 私のユースケースに似て必要としています。
  2. 私は$body_bytes_sentをプロキシパスの後にリモートURLに渡す必要があります。
  3. ブロックcontent_by_luaを実行したと考えて、ngx.captureproxy_passブロックに転送しました。ngx.say()ngx.captureから戻ってきました。リモートURLに$ body_bytes_sentのリクエストが続きます。しかし、私はストリーミングをサポートする必要があります。そして、ファイルはかなり大きくなり、ngx.capture()のために悪いです。
  4. 私はlog_by_luaブロックについて考えましたが、cosockets apisは無効です。 https://github.com/openresty/lua-nginx-module#log_by_lua
+0

これは少しやり過ぎではないと思い、私たちは似たような、すなわち、追跡要求情報を行う、しかし、あなたは、この情報をトロールとnginxのログファイルを定義するためにビートを使用することができます。おそらくこれをlogstashインスタンスに投稿する – Nate

+0

'proxy_pass'を含むブロックには、マイクロサービスに問い合わせる' access_by_lua'ブロックがあります。設定では、マイクロサービスには 'log_by_lua'のデータが与えられ、特定のURLにアクセス可能かどうかを判断できます。 ---- 'proxy_pass'の中のリモートサーバが私たちの制御から外れています。だから私たちはそこでそれをすることはできませんでした。 --- Logstashにいくつかの考えが与えられました。しかし、私は、ログのコピーをマイクロサービスに送る必要があったので、複雑なことがあると思っていました。 – galeaspablo

答えて

0

Luaのカールやcosocketsに依存しない別のライブラリをインストールします。 (https://github.com/Lua-cURL/Lua-cURLv3

あなたは(openrestyが付属しています)luarocksを使用している場合は、このような

apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev --yes

luarocks install Lua-cURL

使用log_by_lua(例えばlog_by_lua_block、log_by_lua_file)でインストールしてください。

# some nginx conf 

location /a_location_with_proxy_pass { 
    proxy_pass https://example.com:443; 
    log_by_lua_file /path/to/luafile.lua; 
} 

あなたlog_by_lua_fileは、リモートサーバにカールリクエストを行う必要があります。

local cURL = require 'curl' 

curlHandle = cURL.easy{ 
    url  = 'https://remote_host.com/endpoint', 
    post  = true, 
    httpheader = { 
     'Content-Type: application/json'; 
    }, 
    postfields = '{"bytes":' .. ngx.var.body_bytes_sent .. '}' 
}; 
curlHandle:perform(); 
+0

ここで悪いことは、レスポンスが受信されるまで、nginx workerをブロックすることです。 –

+0

私は恐れています。私は 'proxy_pass'を' ngx.capture'にするのが好きです - ファイルを扱っているからです。しかし、これは、 '$ body_bytes_sent'を' log_by_lua'で利用できるようにして、コサツを許さないことを意味します。 私は、nginxワーカーをブロックしないが何か他のものを見つけることができないものを好むだろう。あなたが他に何かを持っているならば、ただのアイデアだけでもそれを聞いてみたい! :D – galeaspablo

関連する問題