![使用 HttpRedis 和 NGiNX 的 eval 模块时出现连接超时错误](https://linux22.com/image/611793/%E4%BD%BF%E7%94%A8%20HttpRedis%20%E5%92%8C%20NGiNX%20%E7%9A%84%20eval%20%E6%A8%A1%E5%9D%97%E6%97%B6%E5%87%BA%E7%8E%B0%E8%BF%9E%E6%8E%A5%E8%B6%85%E6%97%B6%E9%94%99%E8%AF%AF.png)
我正在尝试从 Redis 中捕获值。这样我就可以通过变量回显它。这就是我使用 eval 块的原因。但出于某种原因,我收到了错误。
当我重新加载它们时,没有收到任何配置错误。
以下是我尝试加载页面后收到的错误(nginx error.log):
2198 2013/05/15 19:46:00 [info] 18255#0: *22 client timed out (110: Connection timed out) while reading client request line, client: [...] server: [...]
2199 2013/05/15 19:46:00 [info] 18255#0: *23 client timed out (110: Connection timed out) while reading client request line, client: [...], server: [...]
2200 2013/05/15 19:47:40 [info] 18345#0: *28 client timed out (110: Connection timed out) while reading client request line, client: [...], server: [...]
我的配置:
location = /session {
eval $session {
set $laravel "laravel:";
set $redis_key $laravel$cookie_session;
redis_pass [...]:6379;
error_page 404 502 504 = @fallback;
}
echo $cookie_session;
echo ' - ';
echo $session;
}
location @fallback {
echo 'Error!';
}
这是我在 Google Chrome 中获得的结果:
No data received
Unable to load the webpage because the server sent no data.
答案1
该问题与我使用的 NGiNX-Eval-Module 版本有关。
我下载了文档中提供的版本。它们是 GitHub 帐户中较新的版本。
另外,我必须注释掉 ngx_http_eval_module.c 文件中的某些代码:640:39(仅 *pclcf)、631:32(仅 *ecf)、675 和 675。
了解更多信息:https://github.com/vkholodkov/nginx-eval-module/issues/10