Hello!
On Wed, Aug 21, 2013 at 6:19 PM, qq3056 wrote:
[...]
> access_log /data/logs/test.com.log main;
>
你这里引用的 log_format main 具体是如何定义的?你给出的配置文件片段中没有交待。
>
> 从 /data/logs/test.com.log日志里看到的 ngx.var.remote_addr
> 的IP与nginx本身的remote_addr的IP不一致。有的确是一样的。
> 我在nginx设置变量名$self_remote_addr ,当时结果还是一样,有时一样,有时不一样。
> 这是为什么?
看起来像是 remote_addr 在 content 阶段和 log 阶段之间被修改了。ngx_lua 的
ngx.var.remote_addr 直接调用的就是 Nginx 的 $remote_addr,它们都是读取
r->connection->addr_text 这个字符串。据我所知,Nginx 核心中只有标准的 ngx_realip 模块可能会对
r->connection->addr_text 进行修改,但如果真修改了话,修改时间最晚也在 pre-access 阶段,远早于你的
Lua 代码运行的 content 阶段和 access_log 运行的 log 阶段。
三条建议:
1. 你能给出一些具体的不一样的实例吗?越多越好。
2. 另外,如果你能提供一个最小化的实例以及复现此问题的具体步骤就更好了。
3. 最后,请提供你的 nginx 的配置,可以使用下面这条命令取得:
/path/to/your/nginx -V
Regards,
-agentzh