HELLO,
刚接触openresty,有个问题想请教:ngx.req.get_headers()["HEADER"] 跟ngx.var.HEADER有什么区别?
举例如下:
access阶段的lua代码:
-------------
ngx.print("host: ", ngx.req.get_headers()["host"], "\n");
ngx.print("host: ", ngx.var.host, "\n");
-------------
背景说明:
在access阶段之前就修改了request header中的host字段(在nginx对host字段进行解析的时候对host做了修改,注:在nginx的11个阶段之前)。
问题1:
为什么lua代码中两种方式打印出的host会不同?(前者打印的是修改前的,后者打印的是修改后的)
备注:如果通过ngx.req.set_header()的方式来修改host,则不会出现上述现象。
问题2:
采用openresty,用lua脚本的方式是否有方法在11个阶段之前修改host和uri?我想将用户请求http://1.1.1.1/a.b.com/file的host修改为a.b.com,将其uri修改为/file。
这样其能被server_name=a.b.com的server块匹配上。