当前位置:首页 > nginx > 正文内容

Nginx 获取自定义请求header头和URL参数

canca3年前 (2023-04-17)nginx1555

一、获取 header 请求头

在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。

在 nginx配置中,通过$http_HEADER 即可获得请求头HEADER的内容。

案例:

$.ajax({
.......
headers: { 
    Accept: "application/json; charset=utf-8", 
    X-TimerLocal: "Bin"  //这个是自定义的请求头
},
.......
});

在nginx的location配置中,在获取header配置时,须要在header名称前面加上固定前缀“http_“,并将header名称中的“-”中划线变为下划线,举例说明:


       自定义的header名称为X-TimerLocal,那在nginx中使用$http_x_timerlocal 来获取到X-TimerLocal的值。

if ($http_x_timerlocal  = 'BIN') {
    rewrite ^(.*/timerbin/.*)$ https://$host$1 permanent;
}

包含X-TimerLocal=BIN的header请求进行判断,若是发现路径中包含/timerbin/路径时,对请求URL进行重写,从新跳转。


二、获取url参数

在 ngx_lua 中访问 Nginx 内置变量 ngx.var.arg_PARAMETER 即可获得GET参数PARAMETER的内容。

在 nginx配置中,通过$arg_PARAMETER 即可获得GET参数PARAMETER的内容。

案例:


通过 http://www.test.com?name=hello&id=123 来验证url的请求参数,能够在nginx中获取到,只需要修改nginx.conf 配置文件如下,就可以在access.log中看到id和name在log中

http {

    include       mime.types;

    default_type  application/octet-stream;



    log_format main '{ "@timestamp": "$time_iso8601", '

    '"servername": "$http_host", '

    '"id": "$arg_id",'

    '"name": "$arg_name",'

    '"remote_addr": "$remote_addr",'

    '"referer": "$http_referer",'

    '"request": "$request",'

    '"request_time": "$request_time",'

    '"status": $status,'

    '"bytes":$body_bytes_sent,'

    '"agent": "$http_user_agent",'

    '"x_forwarded": "$http_x_forwarded_for",'

    '"upstr_addr": "$upstream_addr",'

    '"upstr_host": "$upstream_http_host",'

    '"ups_resp_time": "$upstream_response_time" }';



    access_log  logs/access.log main;

    server_names_hash_bucket_size 128

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/841.html

分享给朋友:

“Nginx 获取自定义请求header头和URL参数” 的相关文章

nginx 反向代理时丢失端口的解决方案,443端口变80

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题。但一旦设置为监听其他端口,就一直跳转不正常;如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了。    这里给出一个简短的解决方案,修改nginx的配置文件。一、配置...

nginx变量

nginx变量

与request有关的变量 1,$arg_name 请求行中,名称为name的参数的值。比如,当请求行是"GET /nginx/varindex/?from=rss HTTP/1.1"时,arg_name的值是空字符串...

nginx if判断&&和||写法

今天在写nginx配置的时候需要用到if判断的&&,但是查了一下文档if并不支持&&的写法,现在将方法记录一下①nginx if判断&&(并且)写法,即:采用变量叠加的方法实现set $allowphp ''; i...

Nginx 之 ip_hash 问题

起因公司项目上用到了Asp.Net Core SignalR,由于SignalR需要长链接,所以在进行水平扩展的时,不仅需要Redis做底板,还需要将同一个链接的请求打到同一台机器上;作为一个资深面相百度编程的Coder,第一个想到的当然是nginx的ip_hash了,毕竟在session横行的年代...

详解nginx的root与alias

详解nginx的root与alias

nginx版本: 1.18.01. 结论location命中后如果是root,会把请求url的 ip/域名+port替换为root指定的目录,访问资源如果是alias,会把请求url的ip/域名+port+匹配到的路径替换为alias指定的目录,访问资源2. 详解root2.1 基本用法以请求htt...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。