NGINX 常用内置变量
目录
$remote_addr 变量
$args 变量
$is_args 变量
$document_root 变量
$document_uri 变量
$host 变量
$limit_rate 变量
$remote_port 变量
$remote_port --显示客户端端口
$request_method 变量 --返回请求方式
$request_filename 变量 --返回请求实际路径
$request_uri; 变量 --返回document_uri 与 args
$server_protocol 变量 -- 服务端协议
$server_addr 变量 -- 服务器地址
$server_name -- 虚拟主机名称
$server_port -- 访问主机端口
多变量组合成URL
| 变量 | 描述 |
|---|---|
$remote_addr | 存放了客户端的地址,注意是客户端的公网 IP |
$args | URL 中的所有查询参数。 例如: 返回 |
$is_args | 如果 URL 中有查询参数,则为 ?,否则为空。 |
$document_root | 当前请求的系统根目录。例如:/webdata/nginx/timinglee.org/lee。 |
$document_uri | 当前请求中不包含查询参数的 URI。例如:/var。 |
$host | 请求的 Host 名称。 |
$limit_rate | 如果设置了 limit_rate,则显示限制的网络速率,否则为 0。 |
$remote_port | 客户端请求 Nginx 服务器时使用的端口。 |
$remote_user | 经过 Auth Basic Module 验证的用户名。 |
$request_body_file | 反向代理时发给后端服务器的本地资源文件名。 |
$request_method | 请求的方法(例如:GET, PUT, DELETE 等)。 |
$request_filename | 当前请求的资源文件的磁盘路径。 |
$request_uri | 包含查询参数的原始 URI,不包含主机名。例如:/main/index.do?id=20190221&partner=search。 |
$scheme | 请求的协议(例如:http, https, ftp 等)。 |
$server_protocol | 客户端请求资源使用的协议版本(例如:HTTP/1.0, HTTP/1.1, HTTP/2.0 等)。 |
$server_addr | 服务器的 IP 地址。 |
$server_name | 虚拟主机的主机名。 |
$server_port | 虚拟主机的端口号。 |
$http_user_agent | 客户端浏览器的详细信息。 |
$http_cookie | 客户端的所有 Cookie 信息。 |
$cookie_<name> | 请求报文中特定 Cookie 的值,<name> 替换为 Cookie 的名称。 |
$http_<name> | 记录请求报文的首部字段,<name> 替换为首部字段的小写形式,横线替换为下划线。 |
示例
$remote_addr 变量
[root@RHEL-9 conf.d]# vim /usr/local/nginx/conf.d/var.conf
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;}[root@RHEL-9 conf.d]# systemctl restart nginx# 客户端访问
[root@docker-rhel ~]# curl var.shuyan.com/var
192.168.239.50
$args 变量
[root@RHEL-9 conf.d]# vim var.conf
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;}
[root@RHEL-9 conf.d]# nginx -s reload# 客户端测试 $args 匹配? 后面的值
[root@docker-rhel ~]# curl var.shuyan.com/var?name=111www=123
192.168.239.50
name=111www=123
$is_args 变量


$document_root 变量
[root@RHEL-9 conf.d]# vim var.conf
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;}[root@RHEL-9 conf.d]# nginx -s reload

实现效果

$document_uri 变量
[root@RHEL-9 conf.d]# vim var.conf
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;}[root@RHEL-9 conf.d]# nginx -s reload
测试效果


实现效果

$host 变量
[root@RHEL-9 conf.d]# vim var.conf
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;}[root@RHEL-9 conf.d]# nginx -s reload

$limit_rate 变量
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;# 限速打印#如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0echo $limit_rate;} $remote_port 变量
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;echo $limit_rate;#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口echo $remote_port;} 
$remote_port --显示客户端端口
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;echo $limit_rate;echo $remote_port;# 已经经过Auth Basic Module验证的用户名echo $remote_user;}# 客户端测试
[root@docker-rhel ~]# curl -u shuyan:123456 var.shuyan.com/var?name=111www=123
192.168.239.50
name=111www=123
?
/data/web/html
/var
/data/web/html/var
var.shuyan.com
0
33194
shuyan 
$request_method 变量 --返回请求方式
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;echo $limit_rate;echo $remote_port;echo $remote_user;# 返回请求资源的方式 GET/PUT/DELETE等echo $request_method;}
$request_filename 变量 --返回请求实际路径
server {listen 80;server_name var.shuyan.com;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;echo $is_args;echo $document_root;echo $document_uri;echo $document_root$document_uri;echo $host;echo $limit_rate;echo $remote_port;echo $remote_user;echo $request_method;# 当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径echo $request_filename;}[root@docker-rhel ~]# curl -u shuyan:123456 var.shuyan.com/var?name=111www=123
192.168.239.50
name=111www=123
?
/data/web/html
/var
/data/web/html/var
var.shuyan.com
0
33206
shuyan
GET
/data/web/html/var 
$request_uri; 变量 --返回document_uri 与 args
# 包含请求参数的原始 URI ,不包含主机名,相当于 :$document_uri?$args,


$server_protocol 变量 -- 服务端协议
# 保存了客户端请求资源使用的协议的版本,例如 :HTTP/1.0 , HTTP/1.1 , HTTP/2.0 等

$server_addr 变量 -- 服务器地址
# 保存了服务器的 IP 地址
$server_name -- 虚拟主机名称
# 虚拟主机的主机名
$server_port -- 访问主机端口
# 客户端浏览器的详细信息
$http_cookie -- 返回cookie值
# 客户端的所有 cookie 信息
$cookie_<name>
#name 为任意请求报文首部字部 cookie 的 key 名
$http_<name>
# name 为任意请求报文首部字段 , 表示记录请求报文的首部字段,n ame 的对应的首部字段名需要为小写,如果有 横线需要替换为下划线
多变量组合成URL
$scheme、$host、$document_uri、$args
相关文章:
NGINX 常用内置变量
目录 $remote_addr 变量 $args 变量 $is_args 变量 $document_root 变量 $document_uri 变量 $host 变量 $limit_rate 变量 $remote_port 变量 $remote_port --显示客户端端口 $request_method 变量 --返回请求方式 $request_filename 变量 --返回请求实际路径 $request_uri…...
Windows采用VS2019实现Open3D的C++应用
1、参考链接 https://blog.csdn.net/qq_31254435/article/details/137799739 但是,我的方法和上述链接不大一样,我是采用VS2019进行编译的,方便在Windows平台上验证各种算法。 2、创建一个VS2019的C Console工程 #include <iostream>…...
冒泡排序、选择排序、插入排序,三种简单排序算法的区别?
1、冒泡排序 冒泡排序是从下标 1 遍历到 n,每当遇到大于下一个的,就和上一个交换位置,这样最大的就移动到了 n 的位置,然后从头再从 1 遍历到 n-1,把第二大的移动到 n-1 的位置,依此类推,每次从…...
Docker 日志管理
一、ELK -Filebeat Elasticsearch 数据的存储和检索 常用端口: 9100:elasticsearch-head提供web访问 9200:elasticsearch与其他程序连接或发送消息 9300:elasticsearch集群状态 Logstash 有三个组件构成input,fi…...
JavaScript初级——基础知识
一、JS的HelloWord 1、JS的代码需要编写到script标签中 2、JS的执行是根据语句从上到下一次执行的。 二、JS的编写位置 1、可以将js代码编写到标签的onclick属性中,当我们点击按钮时,js代码才会执行。 2、可以将js代码写在超链接的href属性中࿰…...
0817(持久层框架:JDBC,MyBatis)
三层架构(表现层,业务层,持久层) java中框架的概述(表现层、业务层、持久层的关系)_控制层业务层持久层的关系-CSDN博客 框架:框架一般处在低层应用平台(如J2EE)和高层…...
在亚马逊云科技上安全、合规地创建AI大模型训练基础设施并开发AI应用服务
项目简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用Servi…...
无人机模拟训练室技术详解
无人机模拟训练室作为现代无人机技术培训的重要组成部分,集成了高精度模拟技术、先进的数据处理能力及高度交互的操作界面,为无人机操作员提供了一个安全、高效、接近实战的训练环境。以下是对无人机模拟训练室技术的详细解析,涵盖系统基础概…...
【Spring框架】
一、引言二、Spring核心概念三、Spring入门示例四、进一步了解Spring的依赖注入五、Spring的面向切面编程(AOP)六、总结 一、引言 Spring框架自2003年发布以来,凭借其轻量级、易于扩展的特性,在Java企业级应用开发领域得到了广泛…...
uniapp 日常业务 随便写写 源码
现成的组件 直接用 <template><view style"margin: 10rpx;"><view class"tea-header"><text class"tea-title">礼尚往来</text><view class"tea-view-all"><text>查看全部</text>&l…...
【软件测试】单元测试20套练习题
(一)概述 使用Java语言编写应用程序,设计测试数据,完成指定要求的白盒测试,对测试数据及相应测试结果进行界面截图,将代码以及相关截图粘贴到白盒测试报告中。 (二)题目要求...
8.16 day bug
bug1 题目没看仔细 额外知识 在 Bash shell 中,! 符号用于历史扩展功能。当你在命令行中输入 ! 后跟一些文本时,Bash 会尝试从你的命令历史中查找与该文本相匹配的命令。这是一种快速重用之前执行过的命令的方法。 如何使用历史扩展 基本用法: !strin…...
《Nginx核心技术》第11章:实现MySQL数据库的负载均衡
作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀,…...
使用 Gnosis Safe 创建多签名钱包
创建多签名钱包可以通过多个步骤完成,具体取决于你使用的平台或工具。下面我将介绍使用 Gnosis Safe 创建多签名钱包的过程,因为它是目前以太坊生态中最受欢迎且功能强大的多签名钱包之一。 目录 使用 Gnosis Safe 创建多签名钱包1. 准备工作2. 访问 Gnosis Safe3. 创建多签名…...
LeetCode 算法:前 K 个高频元素 c++
原题链接🔗:前 K 个高频元素 难度:中等⭐️⭐️ 题目 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2…...
MySQL的SQL语句更新某个字段的值在原来值的基础上随机增加100~600
要在 MySQL 中更新某个字段的值,使其在原有值的基础上随机增加一个 100 到 600 之间的值,你可以使用 RAND() 函数来生成随机数,并结合其他 SQL 函数进行计算。以下是一个 SQL 更新语句的示例: UPDATE your_table_name SET your…...
LeetCode --- 410周赛
题目列表 3248. 矩阵中的蛇 3249. 统计好节点的数目 3250. 单调数组对的数目 I 3251. 单调数组对的数目 II 一、矩阵中的蛇 只要按照题目要求模拟即可,代码如下 class Solution { public:int finalPositionOfSnake(int n, vector<string>& commands…...
最佳的iPhone解锁软件和应用程序
在探讨最佳的iPhone解锁软件和应用程序时,我们需要考虑多个方面,包括软件的解锁能力、易用性、安全性、兼容性以及用户评价等。以下是对当前市场上几款优秀iPhone解锁软件和应用程序的详细分析,旨在为用户提供全面而深入的指导。 一、奇客iO…...
初等函数和它的表达式
常量函数,幂函数,指数函数,对数函数,三角函数和反三角函数成为基本初等函数。基本初等函数经过有限四则运算和符合运算得到的函数称为初等函数。 1. 常量函数 表达式: (其中 c 是常数)参数的意…...
Android 12系统源码_多屏幕(二)模拟辅助设备功能开关实现原理
前言 上一篇我们通过为Android系统开启模拟辅助设备功能开关,最终实现了将一个Activity显示到多个屏幕的效果。 本篇文章我们具体来分析一下当我们开启模拟辅助设备功能开关的时候,Android系统做了什么哪些操作。 一、模拟辅助设备功能开关应用位置 …...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
