WEB服务与NGINX(12)-NGINX的变量
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;
变量的作用域
在不同层级的标签中声明的变量性的可见性规则如下:
- location标签中声明的变量中仅对这个location块可见;
- server标签中声明的变量对server块以及server块中的所有子块可见;
- 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的变量的更多相关文章
- flask在centos下搭建web服务【uwsgi,nginx】
centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...
- Web服务图片压缩,nginx+lua生成缩略图
背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...
- Web服务器之Nginx详解(操作部分)
大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务
基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...
- linux web服务基础知识,dns
#web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx > web server 服务端浏览器 > web client 客户端 #dns解析 ...
- web服务的简单介绍及apache服务的安装
一,web服务的作用: 是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览: 可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...
- web服务基础
Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...
- nginx(二)nginx的安装
下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...
- 上传文件服务与web服务分离
业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...
随机推荐
- 【WCH以太网接口系列芯片】CH9121\9120、CH395\392以太网系列芯片的硬件电路注意事项
本篇基于沁恒微电子官方的以太网接口芯片的DEMO参考原理图进行分析,对一些注意事项进行标注,如果硬件设计上出现问题可以对照参考. CH912x系列: 1.CH9121:建议设计中可以将31脚RUN脚预 ...
- PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件
简介 PhotoView是OpenAtom OpenHarmony(简称"OpenHarmony")系统的一款图片缩放及浏览的三方组件,用于声明式应用开发,支持图片缩放.平移.旋转 ...
- Kubernetes 的 NameSpace 无法删除应该怎么办?
概述 有时候我们操作不规范,或者删除的先后顺序有问题,或者某项关键服务没有启动,导致 Kubernetes 经常会出现无法删除 NameSpace 的情况.这种情况下我们应该怎么办? 规范删除流程 其 ...
- 给你安利一款鲁班大叔开发的maven依赖搜索神器
写在前面 一款好的插件往往能提高我们的开发效率.今天就给大家安利一款maven 依赖搜索插件. 插件是自己一直关注的鲁班大叔开发的,用了几天真的好用 废话不多说,我们就来看看这是一款什么插件 一.ma ...
- 支持API 9的Sample已上新,速来拿走
原文:https://mp.weixin.qq.com/s/sPDG5sG5F_gTp0cE1VV3gQ,点击链接查看更多技术内容. 今年的华为开发者大会上我们发布了HarmonyOS 3.1 D ...
- 树莓派和esp8266之间使用tcp协议通信
树莓派代码: from flask import Flask, render_template import socket import threading app = Flask(__name__) ...
- etcd 历史版本回溯的方法
在使用 etcd 作为配置存储或者其他的场景,如果因为误操作对其中 key 的值进行了修改,如果想要找回原来的值,可以利用 etcd 的版本机制进行回溯找回以前的值.在具体操作之前,我们首先获取一下 ...
- drf视图类的继承关系
- Asp-Net-Core开发笔记:使用alpine镜像并加入健康检查
前言 使用 docker 部署 AspNetCore 应用已经是标配了,之前我一直使用 mcr.microsoft.com/dotnet/aspnet:8.0 这类镜像,简单粗暴,不过可以使用 alp ...
- Spring 源码阅读(二)IoC 容器初始化以及 BeanFactory 创建和 BeanDefinition 加载过程
相关代码提交记录:https://github.com/linweiwang/spring-framework-5.3.33 IoC 容器三种启动方式 XML JavaSE: ApplicationC ...