码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nginx内置变量详解


    文章目录

    • 1. 请求
      • - $args (参数)
      • - $query_string (请求参数)
      • - $is_args (参数判断)
      • - $arg_PARAMETER
      • - $request (客户端请求)
      • - $request_body (客户端请求的报文体)
      • - $request_body_file
      • - $request_filename (请求文件路径)
      • - $request_method (请求的方法)
      • - $uri (请求URI)
      • - $request_uri (请求的URI,带参数)
    • 2. 客户端信息
      • - $remote_addr (客户端IP地址)
      • - $binary_remote_addr (客户端地址的二进制表示)
      • - $remote_port (客户端端口号)
      • - $remote_user (客户端用户名)
      • - $http_cookie (客户端的cookie信息)
      • - $http_user_agent (客户端代理信息)
    • 3. 服务器信息
      • - $scheme (使用协议)
      • - $server_addr (服务器地址)
      • - $server_port (服务器端口号)
      • - $server_protocol (请求的协议版本)
      • - $document_uri (请求的URI)
      • - $document_root (root路径)
      • - $limit_rate (速率的限制)
      • - $nginx_version (nginx版本)
      • - $pid (主进程的进程ID)
    • 4. Headers
      • - $host
      • - $content_type (请求信息里的Content-Type字段)
      • - $http_x_forwarded_for (访问真实IP路径)
      • - $content_length (Content-Length字段)
      • - $http_HEADER (header中指定字段)
      • - $http_referer (引用地址)
      • - $http_via 最后一个访问服务器的IP地址
      • - 其他header 的字段

    1. 请求

    - $args (参数)

    客户端请求中的参数

    • 示例
        location /crow {
           return  501 $args\n;
        }
    
    • 1
    • 2
    • 3
    • 访问测试
      在这里插入图片描述

    - $query_string (请求参数)

    与$args相同

    - $is_args (参数判断)

    如果$args有值,则等于“?”;否则等于空

    • 示例
        location /crow {
           return  501 $is_args\n;
        }
    
    • 1
    • 2
    • 3
    • 访问测试
      有参数:
      在这里插入图片描述
      没有参数:
      在这里插入图片描述

    - $arg_PARAMETER

    客户端GET请求中PARAMETER字段的值

    • 示例
        location /crow {
           return  501 $arg_name\n;
        }
    
    • 1
    • 2
    • 3
    • 访问测试
      在这里插入图片描述

    - $request (客户端请求)

    • 示例
        location /crow {
           return  501 $request\n;
        }
    
    • 1
    • 2
    • 3
    • 访问测试
      在这里插入图片描述

    - $request_body (客户端请求的报文体)

    - $request_body_file

    发往后端服务器的本地临时缓存文件的名称

    - $request_filename (请求文件路径)

    当前请求的文件路径名,由root或alias指令与URI请求生成

    • 示例
        location /crow {
           return  501 $request_filename\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    - $request_method (请求的方法)

    • 示例
        location /crow {
           return  501 $request_method\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证

    在这里插入图片描述

    - $uri (请求URI)

    请求的不带请求参数的URI,可能和最初的值有不同,比如 经过重定向之类的

    • 示例
        location /crow {
           return  501 $uri\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证

    在这里插入图片描述

    - $request_uri (请求的URI,带参数)

    请求的URI,带参数,不包含主机名

    • 示例
        location /crow {
           return  501 $request_uri\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    2. 客户端信息

    - $remote_addr (客户端IP地址)

    • 示例
        location /crow {
           return  501 $remote_addr\n;
        }
    
    • 1
    • 2
    • 3
    • 访问测试
      在这里插入图片描述

    - $binary_remote_addr (客户端地址的二进制表示)

    略

    - $remote_port (客户端端口号)

    略

    - $remote_user (客户端用户名)

    客户端用户名,用于Auth Basic Module验证

    • 示例
        location /crow {
           return  501 $remote_user\n;
        }
    
    • 1
    • 2
    • 3
    • 验证
      在这里插入图片描述

    - $http_cookie (客户端的cookie信息)

    - $http_user_agent (客户端代理信息)

    3. 服务器信息

    - $scheme (使用协议)

    • 示例
        location /crow {
           return  501 $scheme\n;
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 验证
      在这里插入图片描述

    - $server_addr (服务器地址)

    服务器地址,如果没有用listen指明服务器地址,使用这个变 量将发起一次系统调用以取得地址(这样会造成资源浪费)$server_name请求到达的服务器名

    • 示例
        location /crow {
           return  501 $server_addr\n;
        }
    
    • 1
    • 2
    • 3
    • 验证

    在这里插入图片描述

    容器下nginx说明:
    这是docker内网的一个ip,我们可以看到docker为nginx容器创建了一个默认网络,这个网络的信息如下:

    1687: br-5d8d4edb9cab: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
         link/ether 02:42:b8:7d:5c:4b brd ff:ff:ff:ff:ff:ff
         inet 192.168.80.1/20 brd 192.168.95.255 scope global br-5d8d4edb9cab
         valid_lft forever preferred_lft forever
    
    • 1
    • 2
    • 3
    • 4

    192.168.80.1是该网络的路由地址,192.168.80.2虽然我们没有看到,但作为这个网络的唯一节点,可以想到容器分配了这个IP。

    - $server_port (服务器端口号)

    • 示例
        location /crow {
           return  501 $server_port\n;
        }
    
    • 1
    • 2
    • 3
    • 验证
      在这里插入图片描述

    我们访问的是 1840端口,而返回的是 80端口。因为我们容器内使用的是 80端口,1840只是映射出来的端口。

    - $server_protocol (请求的协议版本)

    - $document_uri (请求的URI)

    • 示例
        location /crow {
           return  501 $document_uri\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    - $document_root (root路径)

    • 示例
        location /crow {
           return  501 $document_root\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证

    在这里插入图片描述

    - $limit_rate (速率的限制)

    - $nginx_version (nginx版本)

    - $pid (主进程的进程ID)

    4. Headers

    - $host

    请求信息中的Host头域值,如果请求中没有则取访问服务器的IP

    • 示例
        location /crow {
           return  501 $host\n;
        }
    
    • 1
    • 2
    • 3
    • 验证
      在这里插入图片描述

    - $content_type (请求信息里的Content-Type字段)

    • 示例
        location /crow {
           return  501 $content_type\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    - $http_x_forwarded_for (访问真实IP路径)

    从客户端到服务器的网络路径,格式:

    X-Forwarded-For: client, proxy1, proxy2
    
    • 1
    • 示例
        location /crow {
           return  501 $http_x_forwarded_for\n;
        }
    
    • 1
    • 2
    • 3
    • 验证
      在这里插入图片描述

    - $content_length (Content-Length字段)

    HTTP请求信息里的Content-Length字段

    • 示例
        location /crow {
           return  501 $content_length\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    - $http_HEADER (header中指定字段)

    • 示例
        location /crow {
           return  501 $http_crow\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证
      在这里插入图片描述

    - $http_referer (引用地址)

    告诉服务器访问是从哪个页面链接过来的,可防止盗链。

    • 示例
        location /crow {
           return  501 $http_referer\n;
        }
    
    • 1
    • 2
    • 3
    • 访问验证

    在这里插入图片描述

    - $http_via 最后一个访问服务器的IP地址

    - 其他header 的字段

    • $sent_http_cache_control
    • $sent_http_connection
    • $sent_http_content_length
    • $sent_http_content_type
    • $sent_http_keep_alive
    • $sent_http_last_modified
    • $sent_http_location
    • $sent_http_transfer_encoding

    在这里插入图片描述

  • 相关阅读:
    图论模板详解
    Vue.js 组件通信——父组件向子组件通过props传值
    【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉
    春招面试准备笔记——NMS(非极大值抑制)算法
    看了还不懂b+tree的本质就来打我
    [力扣] 剑指 Offer 第四天 - 在排序数组中查找数字
    【Vue3】 computed 完整写法 全选反选 、计算商品总价
    虚假新闻检测概述
    UE4 C++设计模式:观察者模式(Observer Pattern)
    看门狗实验
  • 原文地址:https://blog.csdn.net/xingzuo_1840/article/details/127599139
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号