2015-06-30 2 views
3

Я ищу, чтобы изменить заголовок запроса и перенаправить его в Lua, я попыталсяПеренаправление же URL с Lua на Nginx (openresty установки)

ngx.redirect("/") 

и

ngx.exec("/") 

но Я получаю следующее сообщение об ошибке:

attempt to call ngx.redirect after sending out the headers 

есть ли простой способ добавить значение заголовка и перенаправить его где-нибудь еще в Lua? В документации я не нашел подходящей директивы, есть ли способ сделать что-то подобное при использовании content_by_lua_file?

Я использую openresty.

ответ

3

От redirect method documentation:

Note that this method call terminates the processing of the current request and that it must be called before ngx.send_headers or explicit response body outputs by either ngx.print or ngx.say.

Так проверьте, или использовать другой обработчик фазы запроса, такую ​​как rewrite_by_lua.

Что касается установки заголовка используйте ngx.header

Например:

location /testRedirect { 
    content_by_lua ' 
    ngx.header["My-header"]= "foo" 
    return ngx.redirect("http://www.google.com") 
    '; 
} 

curl http://127.0.0.1/testRedirect

выход:

HTTP/1.1 302 Moved Temporarily 
Server: openresty 
Date: Tue, 30 Jun 2015 17:34:38 GMT 
Content-Type: text/html 
Content-Length: 154 
Connection: keep-alive 
My-header: foo 
Location: http://www.google.com 

<html> 
<head><title>302 Found</title></head> 
<body bgcolor="white"> 
<center><h1>302 Found</h1></center> 
<hr><center>nginx</center> 
</body> 
</html> 

Примечание: Большинство сайтов не будет принимать пользовательский заголовок исходя из перенаправление, поэтому рассмотрим возможность использования cookie в этом случае.

Смежные вопросы