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系统做了什么哪些操作。 一、模拟辅助设备功能开关应用位置 …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...