2017-09-05 1 views
0

Je suis nouveau à haproxy intégration Je veux appeler une action pour chaque requête httphaproxy soutien lua: veulent appeler la méthode de core.action de fichier Lua

code fichier test_world.lua

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

code de fichier haproxy.cfg

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 

Je fais aussi bien la demande de navigateur et telnet, mais pas obtenir la réponse

Répondre

0

Vous utilisez le mauvais exemple "Bonjour tout le monde". Dans votre exemple, vous enregistrez une fonction Lua en tant que action.
Les fonctions enregistrées en tant qu'actions sont plus couramment utilisées pour manipuler les requêtes http et non pour envoyer des réponses http.

Si vous avez besoin d'envoyer une réponse au lieu du serveur principal, vous devez utiliser un applet, comme le montre l'exemple suivant:

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

oui je veux manipuler la demande et de transmettre au serveur de back-end , juste pour montrer le message que je l'imprimais. –

+0

Si vous souhaitez afficher un message en guise de réponse à la place des vrais serveurs, vous devez utiliser l'applet sans aucun problème. – MoEmEn