如何使用Nginx服务端的头变量?

Nginx

1 前言

笔者公司有一个项目,需要客户端通过head传递一个变量给Nginx,然后Nginx服务端读取此变量并利用。
笔者因此研究如何能使用Nginx服务端的头变量,故形成此文并分享。

2 环境搭建

为了便于测试,请准备以下测试环境,
https://www.cmdschool.org/archives/2057

3 实现部分

3.1 服务器端配置

3.1.1 修改配置文件

server {
    listen       80;
    server_name  www.cmdschool.org;

    location / {
        root   /var/www/www.cmdschool.org;
        index  index.html index.htm;
        echo $http_token;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3.1.2 重启使配置生效

systemctl restart nginx

3.2 客户端配置

3.2.1 配置名称解析

注:请配置DNS解析或者修改host,这里不详述(太简单)

3.2.2 客户端传递头变量

curl -v -H 'token:c5b5c5c3379147a489fbdd8ba72dba66' http://www.cmdschool.org

可见如下信息:

* About to connect() to www.cmdschool.org port 80 (#0)
*   Trying 10.168.0.154... connected
* Connected to www.cmdschool.org (10.168.0.154) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: www.cmdschool.org
> Accept: */*
> token:c5b5c5c3379147a489fbdd8ba72dba66
>
< HTTP/1.1 200 OK
< Server: nginx/1.14.0
< Date: Sun, 13 May 2018 11:00:47 GMT
< Content-Type: application/octet-stream
< Transfer-Encoding: chunked
< Connection: keep-alive
<
c5b5c5c3379147a489fbdd8ba72dba66
* Connection #0 to host www.cmdschool.org left intact
* Closing connection #0

注:留意第八行(客户端传递的头信息)和倒数第三行(Nginx服务端接收并输出的头信息)

参阅文档:
================
http://nginx.org/en/docs/http/ngx_http_core_module.html
https://www.cnblogs.com/cuchadanfan/p/6551520.html
https://www.cnblogs.com/raichen/p/5121262.html

没有评论

发表评论

Nginx
如何解决Nginx代理传大文件不同步问题?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境遇到用户透过反向代理上传大文件提示用户已经完成 …

Nginx
如何实现Nginx根据路径分配代理?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境遇到需要根据URI路径选择走哪个代理服务器的案 …

Nginx
如何实现Nginx返回字符串或变量值?

1 前言 一个问题,一篇文章,一出故事。 笔者测试环境中经常需要返回Nginx变量的具体值,于是整理 …