hi
各位好:
因为怕英文叙述不好,用中文叙述下吧:
我在自定义的插件中,编写access函数,在request中设置请求头Host的值为“xxxxxxxxxxxx:29800”
调用的代码是
function _M.access(conf, ctx)
    core.request.set_header("Host", "xxxxxxxxxxxx:29800")
end
然后我在被代理的后端服务中,打印出请求头Host的值:
调用的代码是:
System.out.println("Host:::::::::::::::::::::"+request.getHeader("Host"));
我在浏览器上面发出请求:http://10.110.149.175:9080/xxl-job-admin/
后端服务打印日志如下:
Host:::::::::::::::::::::10.110.149.175
可以看到日志打印的不是我在自定义插件中设置的值,所以,我怀疑,通过core.request.set_header("Host","xxvalue")设置请求头Host的值,是不是apisix的一个bug,或者是apisix对具体的Header(如Host)的值设定有限制。


为了验证我的怀疑,我在原生的nginx.conf中做如下设置:
location /xxl-job-admin/ {
    proxy_pass http://xxlServer;
    proxy_set_header   Host             xxxxxxxxxx:$server_port;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}


通过浏览器访问:http://10.110.152.175:8000/xxl-job-admin/
后端服务打印日志如下:
Host:::::::::::::::::::::xxxxxxxxxx:8000
与我在nginx.conf中设置的Host是相同的


综上,可以看出我在自定义插件access方法中,通过函数 core.request.set_header("Host","xxvalue") 
设置请求头Host的值,是有问题的,请各位帮忙看下问题所在,谢谢!













--

此致!

                                                                                
                                             敬礼

----曹勇

TEL:15910514083

Reply via email to