AIO、第三方模块及自定义变量(三)|学习笔记

简介: 快速学习 AIO、第三方模块及自定义变量

开发者学堂课程【Nginx 企业级 Web 服务实战:AIO、第三方模块及自定义变量】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/649/detail/10759


AIO、第三方模块及自定义变量(三)

四、内置变量

日志记录

取值判断

例如可以设置这样一个按判断

if 协议 不是 https:

转到 https

else

响应

Fi

变量使用:

1)$remote_addr;

#存放了客户端的地址,注意是客户端的公网 IP,也就是一家人访问一个网站,则会显示为路由器的公网 IP。

演示:输入vim /apps/nginx/conf/conf.d/linux39-pc.conf

进入后注释掉#echo hello world

再输入echo $remote_addr;

之后再 reload,输入 /apps/nginx/sbin/nginx -s reload

再来访问网址 magedu.net

页面显示172.20.0.100

显示的地址就是访问的地址,用户的源地址。那么在配置 nginx 的日志文件时可以调用

输入vim/apps/nginx/conf/nginx.conf

观察到配置中存在 $remote addr,已经记下了用户的源地址

2)$args;

#变量中存放了URL中的指令,例如http://www.magedu. net/main/index.do?id=20190221&partner=search中的

id=20190221&partner=search

演示:输入vim /apps/nginx/conf/conf.d/linux39-pc.conf

注释掉echo $remote_addr

再输入echo $args;

再输入 /apps/nginx/sbin/nginx -s reload

再访问网址

如图页面显示

image.png

自动将?后的参数输出,如果将后面换一个值123456,结果就会变成

Keyword=iphone11&enc=utf-8&wq=iphone11&pvid=123456

3)$document_root;

#保存了针对当前资源的请求的系统根目录,如 /apps/nginx/ html。

演示:在配置中注释掉 echo $args

再输入echo $document_root;

保存后 reload

再来访问网址 magedu.net/index.html

页面显示 /data/nginx/html/pc

4)$document_uri;

#保存了当前请求中不包含指令的 URI,注意是不包含请求的指令,比如

http://www.magedu.net/main/index.do?id=20190221&partner=search会被定义为/main/index.do

演示:在配置中注释掉echo $document_root;

再输入echo $document_uri;

reload 后再访问刚才的网址

magedu.net/Search?keyword=iphone11&enc=utf-8&wq=iphone11&pvid=123456

页面显示 /Search

如果修改 Search为linux38

则显示 /linux

5)$host

#存放了请求的 host 名称

演示:注释掉 echo $document_uri;

再输入echo $host

保存后 reload

再访问网址

magedu.net/linux?keyword=iphone11&enc=utf-8&wq=iphone11&pvid=123456

页面显示就为 www.magedu.net,就是请求的服务器域名

6)$http_user_agent

#客户端浏览器的详细信息

演示:注释掉 echo $host

再输入echo $http_usr_agent;

保存后 reload

再访问网址,该浏览器为谷歌

页面显示为

Mozila/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/78.0.3904.97 Safari/537.36

如果换成火狐浏览器,则页面显示

Mozila/5.0(X11;Ubuntu;Linux x86_64;rv:71.0)Gecko/20100101 Firefox/71.0

7)$http_cookie;

客户端的 cookie 信息。

8)limit_rate 10240;

echo $limit_rate;

#如果 nginx 服务器使用 limit_rate 配置了显示网络速率,则会显示,如果没有设置,则显示0。

9)$remote_port;

#客户端请求 Nginx 服务器时随机打开的端口,这是每个客户端自己的端口。

演示:注释掉 echo $http_user_agent

再输入echo $remote_port

保存后 reload

再来访问该网址,页面显示为48520

如果换火狐浏览器就显示为48614

10)$remote_user;

#已经经过 Auth Basic Module 验证的用户名。

11)$request_body_file;

#做反向代理时发给后端服务器的本地资源的名称。

演示:注释掉 echo $remote_port

再输入echo $request_body_file;

保存后 reload

再访问网址 magedu.net/index.html

这是做反向代理时才有,目前不显示

12)$request_method;

#请求资源的方式,GET/PUT/DELETE 等

演示:注释掉 echo $request_body_file;

再输入echo $request_method;

保存后 reload,再来访问

页面显示 GET

13)$request_filename;

#当前请求的资源文件的路径名称,由 root 或 alias 指令与 URI 请求生成的文件绝对路径,如 /apps/nginx/html/main/index.html

演示:注释掉echo $request_method;

再输入echo $request_filename;

再访问网址页面显示结果为 /data/nginx/html/pc/index.html

14)$request_uri;

#包含请求参数的原始 URI,不包含主机名,

如:/main/index.do?id=20190221&partner=search 。

演示:注释掉 echo $request_filename;

再输入echo $request_uri;

刷新前若在网址后增加?search=iphone11显示结果不变,刷新后显示结果为/index.html?search=iphone11

15)$scheme;

请求的协议,如 ftp,https, http 等。

演示:注释掉echo $request_uri;

再输入echo $scheme;

再访问刷新显示 http

16)$server_protocol;

#保存了客户端请求资源使用的协议的版本,如 HTTP/1.0,HTTP/1.1,HTTP/2.0等。

演示:注释掉echo $scheme;

再输入echo $server_protocol;

刷新后显示为 HTTP/1.1

17)$server_addr;

#保存了服务器的IP地址。

演示:注释掉echo $server_protocol;

再输入echo $server_addr;

再刷新页面为172.20.0.101

18)$server_name;

#请求的服务器的主机名

19)$server_port;

#请求的服务器的端口号

演示:输入echo $server_name;

echo $server_port;

刷新页面为172.20.0.101 www.magedu.net 80

相关文章
|
6月前
|
缓存 Ubuntu 网络协议
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
105 1
|
Go
Golang 语言标准库 sync 包的 RWMutex 读写互斥锁怎么使用?
Golang 语言标准库 sync 包的 RWMutex 读写互斥锁怎么使用?
65 0
|
Go
go语言简单实现加载ini文件
go语言简单实现加载ini文件
129 0
go语言简单实现加载ini文件
|
应用服务中间件 开发工具 nginx
AIO、第三方模块及自定义变量(二)|学习笔记
快速学习 AIO、第三方模块及自定义变量
130 0
AIO、第三方模块及自定义变量(二)|学习笔记
|
缓存 算法 应用服务中间件
AIO、第三方模块及自定义变量(一)|学习笔记
快速学习 AIO、第三方模块及自定义变量
402 0
AIO、第三方模块及自定义变量(一)|学习笔记
|
编译器 Go 开发者
包使用注意事项和细节(1)|学习笔记
快速学习包使用注意事项和细节(1)
包使用注意事项和细节(1)|学习笔记
|
缓存 JavaScript 开发者
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
快速学习 require 函数加载模块原理(被加载的模块会先执行一次)
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
|
Go 微服务
从源码的角度看Go语言flag库如何解析命令行参数!
从源码的角度看Go语言flag库如何解析命令行参数
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
86 0
线程池的7种创建方式,强烈推荐你用它...(7)
|
Java
线程池的7种创建方式,强烈推荐你用它...(3)
线程池的7种创建方式,强烈推荐你用它...(3)
117 0
线程池的7种创建方式,强烈推荐你用它...(3)