Nginx扩展第三方模块——echo

第三方模块是对nginx的功能扩展,第三方模块需要在编译nginx的时候使用参数--add-module=PATH指定扩展模块的源码包路径
给Nginx扩展添加echo功能,echo模块的下载地址:
https://github.com/openresty/echo-nginx-module

[root@app src]# yum install git -y
[root@app src]# git clone https://github.com/openresty/echo-nginx-module.git #把echo模块从github上克隆下来
[root@app src]# nginx -s stop #扩展nginx的功能需要从新编译,编译前必须停止服务;如果服务不停止,则无法用新生成的nginx二级制程序替代原有程序
[root@app nginx-1.16.1]# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-file-aio --add-module=/usr/local/src/echo-nginx-module #添加模块源码路径
[root@app nginx-1.16.1]# make -j 4 && make install
[root@app nginx-1.16.1]# nginx location /echo {
echo "hello world";
default_type text/html;
}
当访问www.xxx.com/echo时,将会在浏览器上打印"hello world"
如果不加default_type text/html;,访问www.xxx.com/echo时,将会把它当做文件下载下来,因为echo默认不是mime里所支持的格式;加上这项是告诉浏览器用html的格式去解析它

echo模块的应用

   location /main {
default_type text/html;
echo "hello world,main-->"
echo_reset_timer;
echo_location /sub1;
echo_location /sub2;
echo "took $echo_timer_elapsed sec for total.";
}
location /sub1 {
echo_sleep 1;
echo sub1;
}
location /sub2 {
echo_sleep 1;
echo sub2;
}
echo模块可以使用echo_location调用其他的location

Nginx常用内置变量

$remote_addr;
#存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP。 $args;
#变量中存放了URL中的指令,例如http://www.magedu.net/main/index.do?id=20190221&partner=search中的id=20190221&partner=search;需要输入指令 时,要添加?进行隔开,两个指令中间需要用&进行隔开,args变量里面存放了id=20190221&partner=search $document_root;
#所请求资源的location下面root所指定的路径,如/apps/nginx/html。 $document_uri;
#保存了当前请求中不包含指令的URI,注意是不包含请求的指令,比如http://www.magedu.net/main/index.do?id=20190221&partner=search会被定义为/main/index.do $host;
#存放了请求的域名。 $http_user_agent;
#客户端浏览器的详细信息。 $http_cookie;
#客户端的cookie信息。用户登录后才可以看到cookie信息。 $remote_port;
#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口。 $remote_user;
#已经经过Auth Basic Module验证的用户名。 $request_body_file;
#做反向代理时发给后端服务器的本地资源的名称。做反向代理时必须开启。 $request_method;
#请求资源的方式,GET/PUT/DELETE等。 $request_filename;
#当前请求的资源文件的路径名称,由root或alias指令与URI请求生成的文件绝对路径,如/apps/nginx/html/main/index.html $request_uri;
#包含请求参数的原始URI,不包含主机名,如:/main/index.do?id=20190221&partner=search,打印整个uri。 $scheme;
#请求的协议,如ftp,https,http等。 $server_protocol;
#保存了客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等。 $server_addr;
#保存了服务器的IP地址。 $server_name;
#请求的服务器的主机名,server_name。 $server_port;
#请求的服务器的端口号。

自定义变量

location /test {
default_type text/html;
set $name user1; #设置变量并且赋值
echo $name;
set $filename $request_filename; #一个变量的值可以是读取另一个变量的值
echo $filename;
}
set只可以设置在server、location、if中

nginx之echo模块与内置变量的更多相关文章

  1. Nginx核心模块内置变量

    本文根据Nginx官网整理了Nginx的ngx_http_core_module模块的内置变量,可与Apache做对比参考.随后做了一次测试观察各变量的值,并附上测试结果. 1.变量列表 $arg_n ...

  2. nginx的那些内置变量

    nginx在配置文件nginx.conf中可以使用很多内置变量,配置如下: location /info { add_header 'Content-Type' 'text/html'; echo & ...

  3. nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解

    1.nginx介绍 1丶俄罗斯人开发的,开源www服务软件 2丶软件一共780K 3丶nginx本身是一款静态(html,js,css,jpg等)www软件 4丶静态小文件高并发,同时占用的资源很少, ...

  4. nginx基础学习第二篇:nginx内置变量的使用

    ngx_http_core模块提供的内置变量有很多,常见的有 $uri,用来获取当前请求的uri,不含请求参数. $request_uri,用来获取请求最原始的uri,包含请求参数,且未解码. $re ...

  5. 【nginx】nginx配置文件结构,内置变量及参数调优

    Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的.每个block一般以一个大括号“{”来表示.block 可以分为几个层次,整 ...

  6. nginx 内置变量

    http://blog.sina.com.cn/s/articlelist_1834459124_1_1.html  nginx内置变量杂谈 http://nginx.org/en/docs/http ...

  7. nginx内置变量 大全

    nginx内置变量 内置变量存放在  ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的.总而言之,这些变量代表着客户端请求头的内容,例如$http_u ...

  8. (转)最新版 nginx内置变量 大全

    原文:http://www.cnphp.info/nginx-embedded-variables-lasted-version.html 在配置基于nginx服务器的网站时,必然会用到 nginx内 ...

  9. Python第八天 模块 包 全局变量和内置变量__name__ Python path

    Python第八天  模块   包   全局变量和内置变量__name__    Python path 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Pyt ...

随机推荐

  1. 使用ASP.NET Core MVC应用程序中的ResponseCache属性处理缓存(转载)

    HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...

  2. pycharm_python_flask相关学习心得逐步更新

    2019-10-30: Pycharm的interpreter配置问题对于安装第三方库,如果能够在配置的可视化界面安装成功更好.如果不能可视化安装,则在pycharm的terri..仿cmd下用pip ...

  3. Linux(Ubuntu)通过nfs挂载远程硬盘

    需求 现有两台Linux Server,需要把Linux01 下的8T硬盘挂在到 Linux02 下:Linux01 硬盘: Linux02 硬盘: 挂载原理 通过 nfs-server 将Linux ...

  4. gcc 编译过程

    gcc 编译过程从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i. hello.s. hello.o,最后才得到 hello(或a.out)文件,分别对应着预处理. ...

  5. jwt认证生成后的token如何传回后端并解析的详解

    jwt认证生成后的token后端解析 一.首先前端发送token token所在的位置headers {'authorization':token的值',Content-Type':applicati ...

  6. 基于react-app搭建react-router+redux项目

    前言 总括: 本文采用react+redux+react-router+less+es6+webpack,以实现一个简易备忘录(todolist)为例尽可能全面的讲述使用react全家桶实现一个完整应 ...

  7. java手写多级缓存

    多级缓存实现类,时间有限,该类未抽取接口,目前只支持两级缓存:JVM缓存(实现 请查看上一篇:java 手写JVM高性能缓存).redis缓存(在spring 的 redisTemplate 基础实现 ...

  8. EnumSet详细讲解

    https://blog.csdn.net/tugangkai/article/details/89631886 之前介绍的Set接口的实现类HashSet/TreeSet,它们内部都是用对应的Has ...

  9. 网址URL分解

    http://www.joymood.cn:8080/test.php?user=admin&pwd=admin#login 1.location.href:得到整个如上的完整url 2.lo ...

  10. JVM垃圾收集算法之标记算法

    前言 总所周知,jvm的垃圾收集算法一般包括标记.清除.整理三个阶段,最近在看了有关于垃圾收集的标记算法,记录一下自己的理解. 垃圾收集中标记算法有两种:一种是引用计数法,一种是根搜索算法. 引用记数 ...