Nginx的预定义变量

变量一览

NGINX 提供了一系列预定义变量,可以在配置文件中使用。这些变量提供了关于请求、连接、服务器等信息的访问。以下是一些常用的预定义变量:

$arg_PARAMETER: GET 请求参数中的指定参数值。
$args: 请求中的参数字符串。
$binary_remote_addr: 客户端 IP 地址(二进制格式)。
$body_bytes_sent: 发送给客户端的字节数。
$bytes_sent: 发送给客户端的总字节数。
$connection: 连接序列号。
$connection_requests: 已处理的当前连接的请求数量。
$content_length: 请求头中的 Content-Length 字段。
$content_type: 请求头中的 Content-Type 字段。
$cookie_COOKIE: 请求中的指定 Cookie 值。
$document_root: 当前请求的根目录。
$document_uri: 请求的 URI(不包含参数)。
$host: 请求中的主机头字段。
$hostname: 请求的主机名。
$is_args: 如果请求参数存在,则为 "?",否则为空字符串。
$limit_rate: 限制客户端请求的速率。
$msec: 当前时间戳(毫秒级)。
$nginx_version: 当前 NGINX 版本号。
$pid: 当前 NGINX 进程 ID。
$query_string: 请求的查询字符串。
$realpath_root: 请求根目录的真实路径。
$remote_addr: 客户端 IP 地址。
$remote_port: 客户端端口号。
$remote_user: HTTP 认证的用户名。
$request: HTTP 请求行(例如:GET /index.html HTTP/1.1)。
$request_body: 请求的主体内容。
$request_completion: 请求的完成状态("OK" 或空)。
$request_filename: 当前请求的文件路径。
$request_length: 请求的长度(包括请求行、头部和主体)。
$request_method: 请求的 HTTP 方法(例如:GET、POST)。
$request_time: 请求处理时间(秒)。
$request_uri: 请求的 URI(包括参数)。
$scheme: 请求的协议(http 或 https)。
$sent_http_HEADER: 发送给客户端的响应头字段值。
$server_addr: 服务器 IP 地址。
$server_name: 服务器名称。
$server_port: 服务器端口号。
$server_protocol: 服务器协议(例如:HTTP/1.1)。
$status: 服务器响应的 HTTP 状态码。
$tcpinfo_rtt: 客户端到服务器的往返时延(RTT)。
$tcpinfo_rttvar: RTT 方差。
$tcpinfo_snd_cwnd: 发送方拥塞窗口大小。
$time_iso8601: 当前时间(ISO 8601 格式)。
$time_local: 当前时间(本地时间格式)。
$uri: 请求的 URI(不包含参数)。
$variable: 自定义的变量值。
$http_HEADER: 请求头中的指定字段值。
$http_accept: 客户端发送的 Accept 头部。
$http_accept_encoding: 客户端发送的 Accept-Encoding 头部。
$http_accept_language: 客户端发送的 Accept-Language 头部。
$http_cache_control: 客户端发送的 Cache-Control 头部。
$http_connection: 客户端发送的 Connection 头部。
$http_cookie: 客户端发送的 Cookie 头部。
$http_host: 请求中的主机头字段。
$http_referer: 引导用户代理到当前页面的来源页面。
$http_user_agent: 客户端的用户代理字符串。
$http_upgrade: 客户端发送的 Upgrade 头部。
$http_via: 客户端发送的 Via 头部。
$http_x_forwarded_for: 客户端请求中包含的 X-Forwarded-For 头部信息,表示请求经过的代理服务器 IP 地址。
$http_x_real_ip: 客户端请求中包含的 X-Real-IP 头部信息,表示客户端的真实 IP 地址。

这些预定义变量可以在 NGINX 的配置文件中使用,用于记录访问日志、设置重定向、控制访问权限等。使用这些变量可以让 NGINX 配置更加灵活和强大。

实例

传递客户端的请求信息给后端服务器

在server或者location下配置

proxy_set_header     Host $hos:$server_port;
proxy_set_header     X-Real-IP $remote_addr;
proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $host:$server_port;:

这一行设置了将要发送到后端服务器的请求头中的 Host 字段。$host 表示客户端请求中的主机名,$server_port 表示NGINX服务器的端口号。这样设置可以确保后端服务器正确识别请求的目标主机和端口。

proxy_set_header X-Real-IP $remote_addr;:

这一行设置了将要发送到后端服务器的请求头中的 X-Real-IP 字段。$remote_addr 表示客户端的真实IP地址。这样设置有助于后端服务器获取到客户端的真实IP地址,而不是NGINX服务器的IP地址。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:

这一行设置了将要发送到后端服务器的请求头中的 X-Forwarded-For 字段。$proxy_add_x_forwarded_for 表示NGINX在转发请求时会将客户端的原始IP地址添加到已有的 X-Forwarded-For 字段中。这个字段通常用于跟踪请求经过的代理服务器链路,以便后端服务器可以了解到请求的原始来源。

总的来说,这些配置是为了确保NGINX作为代理服务器时能正确地传递客户端的请求信息给后端服务器,并且保留了客户端的真实IP地址和请求路径。

将NGINX的访问日志记录到指定的文件中

在http,server或location下配置access_log,在配置access_log前先在http下配置log_format,

# 定义自定义的日志格式 
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
# 使用自定义的日志格式记录访问日志 
access_log /usr/local/nginx/logs/access_9266.log main;

access_log: 这是NGINX配置指令,用于指定访问日志的位置和格式。

/usr/local/nginx/logs/access_9266.log: 这是实际的日志文件路径和文件名。NGINX 会将访问日志记录到这个文件中。

main: 这是日志格式的名称。在NGINX的配置文件中,可以定义不同的日志格式,main 是其中一个预定义的日志格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jupyter lab使用虚拟环境

python -m ipykernel install --name 虚拟环境名 --display-name 虚拟环境名然后再启动jupyter lab就行了

计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景,以及空洞卷积的介绍

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景,以及空洞卷积的介绍。Deeplab是Google研发的一系列深度学习模型,主要用于图像语义分割任务,其在众多应用场景中展现出…

Java读取超过内存大小的文件

读取文件内容,然后进行处理,在Java中我们通常利用 Files 类中的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。此时&#xff…

设计模式之代理模式精讲

代理模式(Proxy Pattern)也叫委托模式,是一个使用率非常高的模式,比如我们在Spring中经常使用的AOP(面向切面编程)。 概念:为其他对象提供一种代理以控制对这个对象的访问。 代理类和实际的主题…

C#WPF控件Button详解

本文详解WPF的Button控件。 目录 前言 定义 属性 事件 应用实例 1、普通应用

mysql 常见运算符

学习了mysql数据类型,接下来学习mysql常见运算符。 2,常见运算符介绍 运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。运用运算符 可以更加灵活地使用表中的数据,常见的运算符类型有:算…

【Go】Context

https://www.fengfengzhidao.com/article/WdlGxI0BEG4v2tWkq3bD#go%E8%AF%AD%E8%A8%80%E7%9A%84context https://blog.csdn.net/weixin_52690231/article/details/124518402 https://blog.csdn.net/m0_57960197/article/details/132529334 基于源码 学一点,整一点&a…

pytorch | torchvision.transforms.CenterCrop

torchvision.transforms.CenterCrop>从图像中心裁剪图片 transforms.CenterCrop torchvision.transforms.CenterCrop(size) 功能:从图像中心裁剪图片 size: 所需裁剪的图片尺寸 transforms.CenterCrop(196)的效果如下: (也可…

蓝桥杯刷题--python-34-dp

2. 01背包问题 - AcWing题库 n,vmap(int,input().split()) dp[[0 for i in range(v1)] for i in range(n1)] for i in range(1,n1): v_,wmap(int,input().split()) for j in range(v1): dp[i][j]dp[i-1][j] if j>v_: dp[i][j]max(dp[i]…

2024年水电站大坝安全监测工作提升要点

根据《水电站大坝运行安全监督管理规定》(国家发改委令第23号)和《水电站大坝运行安全信息报送办法》(国能安全〔2016〕261号)的相关规定、要求,电力企业应当在汛期向我中心报送每日大坝汛情。近期,全国各地…

uniapp实现u-datetime-picker时间选择器的默认日期定位,解决default-value不生效问题

uniapp实现u-datetime-picker&#xff0c;设置默认定位日期&#xff0c;解决default-value不生效问题 想实现的效果是点开时间选择器默认显示当前日期&#xff0c;而不是该选择器最早的日期 给选择器添加ref属性&#xff0c;如下&#xff1a; <u-datetime-picker :show&q…

HarmonyOS-如何使用ArkTS声明式语法和基础组件,实现待办列表。

介绍 本篇Codelab将介绍如何使用ArkTS声明式语法和基础组件&#xff0c;实现简易待办列表。效果为点击某一事项&#xff0c;替换标签图片、虚化文字。效果如图所示&#xff1a; 相关概念 ArkTS语法&#xff1a;ArkTS是HarmonyOS的主要应用开发语言。ArkTS基于TypeScript&…

Java八股文(高并发,分布式,JUC)

Java八股文の高并发&#xff0c;分布式&#xff0c;JUC 高并发&#xff0c;分布式&#xff0c;JUC 高并发&#xff0c;分布式&#xff0c;JUC 对于高并发的系统&#xff0c;为了提高用户的体验&#xff0c;你是如何做的&#xff1f;或者说高并发的技巧你用过哪些&#xff1f; …

视频实时行为检测——基于yolov5+deepsort+slowfast算法

1. 背景介绍 随着互联网和移动设备的普及&#xff0c;视频数据量呈爆炸式增长。视频监控、智能家居、自动驾驶等领域对视频内容的理解和分析提出了更高的要求。实时行为检测技术能够从视频中识别出特定行为&#xff0c;为这些领域提供智能化的解决方案。本文将介绍一种基于yol…

Flink学习(一)-flink 本地部署

1&#xff0c;安装 jdk 官网推荐 jdk11 版本。我用 17也可以跑起来 2&#xff0c;下载 flink-1.19 的版本并解压 下载 release 1.19.0 并解压。 tar -xzf flink-1.19.0-bin-scala_2.12.tgz cd flink-1.19.0 3&#xff0c;启动 ./bin/start-cluster.sh 4&#xff0c;访问…

springboot通过threadLocal+参数解析器实现保存当前用户登录信息

首先先介绍一下threadLocal ThreadLocal 线程局部变量&#xff0c;创建一个线程变量后&#xff0c;针对这个变量可以让每个线程拥有自己的变量副本&#xff0c;每个线程是访问的自己的副本&#xff0c;与其他线程的相互独立。 大致知道threadLocal就可以了&#xff0c;然后我…

家电维修之 电子元件 学习

上面一个三角形 下面一根横线是什么电子元件 上面一个三角形下面一根横线是电子元件的图形通常表示一个二极管。二极管是一种常见的电子元件&#xff0c;它具有两个电极&#xff0c;即正极&#xff08;阳极&#xff09;和负极&#xff08;阴极&#xff09;。 上面的三角形表示…

Qt 完成图片的缩放拖动

1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…

Docker部署MongoDB+整合Mongo版MyBatis—Plus

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 目录 一、 MongoDB简介1.1 适用场景1.2 应…

缓冲区溢出漏洞学习总结(漏洞原理及其利用方法)

文章目录 前言1、缓冲区溢出漏洞概述1.1、漏洞概述1.2、缓冲区溢出漏洞概述1.3、缓冲区溢出攻击概述1.4、引发缓冲区溢出的原因 2、栈溢出漏洞2.1、栈溢出漏洞概述2.2、栈溢出漏洞利用2.2.1、利用方法一&#xff1a;修改返回地址2.2.2、利用方法二&#xff1a;覆盖临接变量 3、…