Hello!
2012/8/13 lu...@yougou.com wrote
>
> 你好,非常感谢你编写nginx插件,我在使用agentzh-srcache-nginx-module-v0.14碰到下面的问题,请帮忙解答下:
>
> srcache_fetch: cache sent invalid status line
>
> 第一次没有获取到,报error提示,这个提示正常么?现在有大量的error日志输出,如果第一次没有匹配应该是正常的日志输出吧,可以忽略这类日志么?
这个不正常。这个错误指示 cache 中存储的数据不是 ngx_srcache 需要的合法格式,特别地,这个错误报告说 cache
数据中的第一行不是合法的HTTP 响应状态行,例如
HTTP/1.1 200 OK
是合法的,而
hello world blah blah
这样的则不是。
ngx_srcache 要求 cache 中存放的是原始而合法的 HTTP 响应。一般地,应当总是依赖于 ngx_srcache 模块的
srcache_store 指令来向 cache 中写入数据。如果你确实是使用 srcache_store 而非
php/java/python 等其他 memcached/redis 客户端来向 cache
中写入,则请提供一个最小化并且完整的例子以帮助我在我这里复现这个问题 :)
值得一提的是,如果 cache 不命中的话,是不会有 error 级别的错误消息的,因为这是正常情况。
> 有部分子请求转到了404.htm,另外一部分转到500.htm,为什么一部分转到了404.htm,另外一部分转到500.htm?这个可以给下说明么?
>
一般地,应该禁止在子请求的 location 中使用error_page 进行错误页跳转,因为那只是在浪费资源。ngx_openresty
软件包提供了 no_error_pages 指令可以用于此目的,例如:
error_page 500 /5xx.html;
error_page 400 /4xx.html;
location = /memc {
internal;
no_error_pages; # prohibit inheritance of the error_page
setting in the outer scopes
memc_pass ...;
}
一般地,对于 ngx_memc 模块的响应,404 表示 memcached 返回了 Not Found 应答,而 500
一般是内部错误,具体是什么错误,需要查看 nginx 错误日志中的其他相关的错误信息(你的邮件中并没有提供更多的信息)。
Best regards,
-agentzh
P.S. 同时抄送 openresty 邮件组: https://groups.google.com/group/openresty
欢迎你加入那里讨论这样的问题。