2017-09-05 2 views
0

: Ich bin Datei core.action Methode von Lua nennen Integration HAProxy Ich möchte eine Aktion für jede HTTP-Anforderung nennenHAProxy lua Unterstützung: wollen

test_world.lua Datei Code

core.register_action("test_world", { "tcp-req", "http-req" },function(txn) 
    txn:Info("Hello world") 
end) 

haproxy.cfg Datei Code

global 
lua-load /usr/local/etc/haproxy/test_world.lua 


defaults 
    mode http 

frontend http 
    bind 0.0.0.0:80 
    mode http 
    http-request lua.test_world 

ich bilde Anfrage von Browser und Telnet als gut, aber nicht immer die Antwort

Antwort

0

Sie verwenden das falsche "Hallo Welt" -Beispiel. In Ihrem Beispiel registrieren Sie eine Lua-Funktion als action.
Funktionen, die als Aktionen registriert sind, werden häufiger zum Bearbeiten von http-Anfragen und nicht zum Senden von http-Antworten verwendet.

Wenn Sie anstelle des Back-End-Server eine Antwort zu senden, benötigen Sie einen applet verwenden, wie im folgenden Beispiel gezeigt:

core.register_service("hello-world", "http", function(applet) 
local response = "Hello World !" 
applet:set_status(200) 
applet:add_header("content-length", string.len(response)) 
applet:add_header("content-type", "text/plain") 
applet:start_response() 
applet:send(response) 
end) 
+0

ja ich die Anfrage bearbeiten möchten und weitergeben an den Backend-Server , nur um die Nachricht zu zeigen, dass ich es gedruckt habe. –

+0

Wenn Sie anstelle der echten Server eine Nachricht als Antwort anzeigen möchten, müssen Sie das Applet dort nicht anders herum verwenden. – MoEmEn