Nginx 的 Echo 模块 —— echo-nginx-module(转)

Nginx 有个 echo 模块可以用来输出一些简单的信息,例如:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

location /hello {

  echo "hello, world!";

}

location /hello {

  echo -n "hello, "

  echo "world!";

}

location /timed_hello {

  echo_reset_timer;

  echo hello world;

  echo "‘hello world‘ takes about $echo_timer_elapsed sec.";

  echo hiya igor;

  echo "‘hiya igor‘ takes about $echo_timer_elapsed sec.";

}

location /echo_with_sleep {

  echo hello;

  echo_flush;  # ensure the client can see previous output immediately

  echo_sleep   2.5;  # in sec

  echo world;

}

# in the following example, accessing /echo yields

#   hello

#   world

#   blah

#   hiya

#   igor

location /echo {

    echo_before_body hello;

    echo_before_body world;

    proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;

    echo_after_body hiya;

    echo_after_body igor;

}

location /echo/more {

    echo blah;

}

# the output of /main might be

#   hello

#   world

#   took 0.000 sec for total.

# and the whole request would take about 2 sec to complete.

location /main {

    echo_reset_timer;

    # subrequests in parallel

    echo_location_async /sub1;

    echo_location_async /sub2;

    echo "took $echo_timer_elapsed sec for total.";

}

location /sub1 {

    echo_sleep 2;

    echo hello;

}

location /sub2 {

    echo_sleep 1;

    echo world;

}

# the output of /main might be

#   hello

#   world

#   took 3.003 sec for total.

# and the whole request would take about 3 sec to complete.

location /main {

    echo_reset_timer;

    # subrequests in series (chained by CPS)

    echo_location /sub1;

    echo_location /sub2;

    echo "took $echo_timer_elapsed sec for total.";

}

location /sub1 {

    echo_sleep 2;

    echo hello;

}

location /sub2 {

    echo_sleep 1;

    echo world;

}

# Accessing /dup gives

#   ------ END ------

location /dup {

  echo_duplicate 3 "--";

  echo_duplicate 1 " END ";

  echo_duplicate 3 "--";

  echo;

}

# /bighello will generate 1000,000,000 hello‘s.

location /bighello {

  echo_duplicate 1000_000_000 ‘hello‘;

}

# echo back the client request

location /echoback {

  echo_duplicate 1 $echo_client_request_headers;

  echo "\r";

  echo_read_request_body;

  echo_request_body;

}

# GET /multi will yields

#   querystring: foo=Foo

#   method: POST

#   body: hi

#   content length: 2

#   ///

#   querystring: bar=Bar

#   method: PUT

#   body: hello

#   content length: 5

#   ///

location /multi {

    echo_subrequest_async POST ‘/sub‘ -q ‘foo=Foo‘ -b ‘hi‘;

    echo_subrequest_async PUT ‘/sub‘ -q ‘bar=Bar‘ -b ‘hello‘;

}

location /sub {

    echo "querystring: $query_string";

    echo "method: $echo_request_method";

    echo "body: $echo_request_body";

    echo "content length: $http_content_length";

    echo ‘///‘;

}

# GET /merge?/foo.js&/bar/blah.js&/yui/baz.js will merge the .js resources together

location /merge {

    default_type ‘text/javascript‘;

    echo_foreach_split ‘&‘ $query_string;

        echo "/* JS File $echo_it */";

        echo_location_async $echo_it;

        echo;

    echo_end;

}

# accessing /if?val=abc yields the "hit" output

# while /if?val=bcd yields "miss":

location ^~ /if {

    set $res miss;

    if ($arg_val ~* ‘^a‘) {

        set $res hit;

        echo $res;

    }

    echo $res;

}

这个模块不包含在 Nginx 源码中,安装方法:

1. 首先下载模块源码:https://github.com/agentzh/echo-nginx-module/tags
2. 解压到某个路径,假设为 /path/to/echo-nginx-module
3. 使用下面命令编译并安装 Nginx

?


1

2

3

4

5

6

7

8

9

10

$ wget ‘http://sysoev.ru/nginx/nginx-1.0.11.tar.gz‘

$ tar -xzvf nginx-1.0.11.tar.gz

$ cd nginx-1.0.11/

# Here we assume you would install you nginx under /opt/nginx/.

$ ./configure --prefix=/opt/nginx \

--add-module=/path/to/echo-nginx-module

$ make -j2

$ make install

试试看吧,该模块是国人 @章亦春 开发的。

http://www.oschina.net/question/12_45735?fromerr=jyurMByB

时间: 2024-10-20 22:42:26

Nginx 的 Echo 模块 —— echo-nginx-module(转)的相关文章

nginx安装第三方模块echo

要使用第三方模块ngx_echo的功能,请重新配置添加到nginx插件中 ##下载第三方模块 wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz tar -zxvf v0.61.tar.gz ##解压 cd nginx-1.15.8 ##进入nginx源码目录,准备重新配置nginx ##配置,--add-module指向模块目录即会安装插件到nginx中 ./configure --add-modul

Nginx SPDY Pagespeed模块编译——加速网站载入

在看<Web性能权威指南>的时候,看到了SPDY这货,于是便开始折腾起了这个了,也顺便把pagespeed加了进去. Nginx SPDY 引自百科~~ SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验.SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强.新协议的功能包括数据流的多路复用.请求优先级以及HTTP报头压缩.谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%. 在

NGINX动态增加模块,平滑升级

Nginx 添加第三方模块 众所周知Nginx是分成一个个模块的,比如core模块,gzip模块,proxy模块,每个模块负责不同的功能,除了基本的模块,有些模块可以选择编译或不编译进Nginx.官网文档中的Modules reference部分列出了nginx源码包的所有模块.我们可以按照自己服务器的需要来定制出一个最适合自己的Nginx服务器. 除了Nginx官网源码包提供了各种模块,Nginx还有各种各样的第三方模块.官方文档NGINX 3rd Party Modules也列出了Nginx

Nginx入门到实践-Nginx 中间件

第1章 课程前言总览课程,介绍课程学习须知,环境准备,了解课程意义.1-1 课程介绍1-2 学习环境准备 第2章 基础篇讲解Nginx的快速部署安装.模块.基础配置语法.Nginx的日志输出.Nginx默认配置模块.Nginx对于请求的处理,访问控制模块使用,并区别介绍连接限制与请求限制.2-1 什么是Nginx2-2 常见的中间件服务2-3 Nginx优势多路IO复用2-4 Nginx使用Epoll模型的优势介绍2-5 Nginx-CPU亲和2-6 Nginx-sendfile2-7 Ngin

nginx安装upload和MD5,echo模块

由于工作需要,需要写一个可以自动升级的脚本来上报设备的一些基本信息,前期是每次都去下文件来做比较后去升级脚本,这样比较浪费流量,所以想到了在线上做MD5校验然后再决定是否需要下载脚本来升级,所以在网上查了下nginx关于md5校验配置; 还有需要nginx的上传和下载更能来上传下载最新的脚本文件, 由于nginx不支持MD5模块,echo模块,上传和下载模块,所以需要下载安装,步骤如下: 下载nginx和相关模块: mkdir /package cd /package wget http://n

Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)

1.此文章主要介绍内容 本文主要介绍怎样利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将全部訪问本地Nginx的请求加上OSS 签名转发给OSS,实现本地Nginx无缝衔接阿里云OSS,存储空间无限扩展,存储成本无限下降,数据安全%99.99-- . 2.本篇文章使用到的一些工具技术及怎样学习和获取 1.lua 本文用到的都是一些主要的lua,基本上花半小时阅读下lua的语法就能够轻松理解本文内容 2.N

nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。

ownload:http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gzconfigure and make : ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --add-module=/data/software/lnmp1.

Nginx的GeoIp模块的应用与使用

使用GeoIP模块的原因(Why):由于项目的需要,需要对不同城市访问的客户进行请求转发,eg: 当天津用户A访问www.XXXX.com的时候,Nginx把这个请求转发到天津的服务器以及天津的域名上去,浏览器自动跳转tj.XXXX.com 当广州用户B访问www.XXXX.com的时候,Nginx把这个请求转发到广州的服务器以及广州的域名上去,浏览器自动跳转gz.XXXX.com 使用GeoIP模块的目的(What):博主理解为两个层面,第一技术层级的,可以减轻某个服务器的负载,做到负载均衡的

nginx安装第三方模块file_md5

HTTP协议新增了Content-MD5 HTTP头,但是nginx并不支持这个功能,而且官方也明确表示不会增加这项功能,为什么呢?因为每次请求都需要读取整个文件来计算MD5值,以性能著称的nginx绝对不愿意干出违背软件宗旨的事情.但是有些应用中,需要验证文件的正确性,有些人通过下载当前文件,然后计算MD5值来比对当前文件是否正确.不仅仅浪费带宽资源也浪费了大把的时间.有需求就有解决方案,网友开发了file-md5模块. 1. 下载模块file-md5 # cd /usr/local/src