リダイレクト メソッドのドキュメントから:
このメソッド呼び出しは現在のリクエストの処理を終了し、 ngx.send_headers または ngx.print または ngx.say による明示的なレスポンス ボディ出力の前に呼び出す必要があることに注意してください。
そのため、それを確認するか、 rewrite_by_luaなどの別のリクエスト フェーズ ハンドラを使用してください。
ヘッダーの設定については、ngx.headerを使用します
例えば:
location /testRedirect {
content_by_lua '
ngx.header["My-header"]= "foo"
return ngx.redirect("http://www.google.com")
';
}
カール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 の使用を検討してください。