1. nginx的变量

nginx的变量可以在配置文件中引用,作为功能判断或日志等场景使用,变量可以分为内置变量和自定义变量。

内置变量的官方查看地址为:http://nginx.org/en/docs/varindex.html

1.1 内置变量

内置变量由nginx模块自带,通过变量可以获取到众多的与客户端访问相关的属性值。

变量名称 意义
$remote_addr 客户端ip地址,指的是公网IP地址
$remote_user 客户端验证的用户名
$remote_port 客户端请求nginx时随机打开的端口,指客户端端口
$http_user_agent 客户端浏览器类型
$request 客户端请求报文的完整信息,例如:GET /image/ HTTP/1.1
$document_uri 存放了请求的URL中不包含指令的URI部分,例如http://www,baidu.com/index.do?id=20200101&partner=search中的/index.do
$document_root 当前请求的资源的系统根目录,即root定义的目录
$request_filename 当前请求的资源文件的路径名称,指的是在服务器磁盘上的绝对路径
\(request_uri | 包含请求参数的原始URI,不包含主机名,例如http://www,baidu.com/index.do?id=20200101&partner=search中的/index.do?id=20200101&partner=search,与\)uri相同
$args 存放了URL中的指令,例如http://www,baidu.com/index.do?id=20200101&partner=search中的id=20200101&partner=search
$request_method 请求资源的方法,GET/PUT等
$host 存放了请求报文中请求的host名称,即域名
$request_time 请求处理时间(以秒为单位),分辨率为毫秒;从客户端读取第一个字节与发送最后一个字节后的日志写入之间的时间
$request_length 请求报文长度(包括请求行、标头和请求正文)
$request_body_file 做反向代理时发给后端服务器的本地资源的名称
$http_cookie 客户端的cookie信息
$scheme 请求的协议,如http,https等
$server_protocol 保存了客户端请求资源使用的协议版本,如HTTP/1.0 HTTP/2.0 HTTP/1.1
$server_addr 保存了服务器的IP地址
$server_name 请求的服务器的主机名
$server_port 请求的服务器的端口号
$status 状态码
$body_bytes_sent 应答报文body部分的大小
$bytes_sent 发送给客户端的字节数
$time_local 当前本地的系统时间
$time_iso8601 本地时间,ISO 8601标准格式
$msec 以毫秒表示写入时间
$http_x_forwarded_for 进行反向代理后,客户端的真实IP地址。
$http_referer 表示从哪个页面跳转过来的
$gzip_ratio 压缩比
$connection_requests 通过一个连接共请求的当前请求数(1.1.18)
$connection 连接序列号

1.2 自定义变量

  • set $variable value

    Context:sever,http,location

    声明变量的内容,注意nginx中的变量必须都以$开头。

    支持把一个变量的值赋值给自定义变量。例如set $my_port $server_port;

  • 变量的作用域

    在不同层级的标签中声明的变量性的可见性规则如下:

    1. location标签中声明的变量中仅对这个location块可见;
    2. server标签中声明的变量对server块以及server块中的所有子块可见;
    3. http标签中声明的变量对http块以及http块中的所有子块可见;
  • 自定义变量示例

    #1.在nginx配置文件中自定义变量:
    [root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
    server {
    listen 80;
    server_name www.nginx02.com;
    set $name xuzhichao;
    location / {
    root /data/nginx/html/web2;
    index index.html;
    } location /a {
    return 200 $name\n; <==此处无需使用引号;
    }
    location /b {
    set $name momo;
    return 200 $name\n;
    }
    } #2.重启nginx服务
    [root@nginx01 ~]# systemctl reload nginx.service #3.客户端测试
    [root@xuzhichao ~]# curl http://www.nginx02.com/a
    xuzhichao
    [root@xuzhichao ~]# curl http://www.nginx02.com/b
    momo

WEB服务与NGINX(12)-NGINX的变量的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. Web服务图片压缩,nginx+lua生成缩略图

    背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...

  3. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  4. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  5. 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务

    基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...

  6. linux web服务基础知识,dns

    #web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx   >   web  server  服务端浏览器  >    web  client  客户端 #dns解析 ...

  7. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

  8. web服务基础

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

  9. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  10. 上传文件服务与web服务分离

    业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...

随机推荐

  1. IDEA 2018 激活(UMTIMATE)

    IDEA延长使用期限 这是我的软件About,2018版本,延期至2089. 先下载压缩包解压后得到jetbrains-agent.jar. 下载页面:https://zhile.io/2018/08 ...

  2. kafka主题、消费者、生产者命令行操作

    十二.Kafka (1)Topic 1)查看当前服务器中的所有topic bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list 2) ...

  3. 5 CSS伪类选择器

    5 伪类选择器 anchor伪类:专用于控制链接的显示效果 More Actions:link a:link 选择所有未被访问的链接. :visited a:visited 选择所有已被访问的链接. ...

  4. #倍增,LCA,Kruskal#JZOJ 1092 洛谷 4180 [BJOI 2010] 次小生成树

    题目 给出一个无向图,问它的严格次小生成树(数据保证有解) 分析 首先先找一棵最小生成树,然后对于每条非树边\((x,y,w)\)可以找到最小生成树上\(x,y\)路径上略小于\(w\),首先如果能找 ...

  5. #min_max容斥#HDU 4336 Card Collector

    题目 有\(n\)张牌,获得第\(i\)张牌的概率为\(p_i\), 问期望多少次能收集完\(n\)张牌 分析 题目求的是\(E(\max S)\),根据min_max容斥可以得到, \[E(\max ...

  6. Linux shell中提取文件名和路径

    本文地址: https://www.cnblogs.com/wanger-sjtu/p/17561896.html 首先假设我的文件全称:/home/luna/Desktop/Software/sof ...

  7. Windows开发的瑞士军刀,NewSPYLite发布

    宗旨:延续了SpyLite的方便易用,同时也丰富了更多的功能,更适合开发者使用. 在SpyLite的基础功能上,开发了更多人性化并且好用的功能,增强的信息的可读性,以及软件总体的可用性. New Sp ...

  8. 阿里开源的32B大模型到底强在哪里?

    阿里巴巴最近开源了一个320亿参数的大语言模型Qwen1.5-32B,网上都说很强很强,那么它到底强在哪里呢? 更高的性价比 Qwen1.5-32B中的B是billion的意思,也就是10亿,32B就 ...

  9. Linux之隔离技术

    前言 Linux的内核有两大特性Namespace和CGroup,这两种特性可以在Linux主机上实现主机名.用户.网络等全局资源的隔离,也是实现网络虚拟化.容器技术的基础. 命名空间 Linux N ...

  10. 第八篇:socket网络编程

    一.网络编程简绍 二.socket连接过程 三.socket文件传输 四.socket循环接收 五.socket粘包处理 六.FTP文件传输 七.socketServer 八.web框架 #!/usr ...