Nginx变量相关说明

此篇博客仅仅是为了记录nginx中的变量即含义。

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

nginx-lua 部分api说明

ngx.arg 指令参数,如跟在content_by_lua_file后面的参数

ngx.var 变量,ngx.var.VARIABLE引用某个变量

ngx.ctx 请求的lua上下文

ngx.header 响应头,ngx.header.HEADER引用某个头

ngx.status 响应码

 

API 说明

ngx.log 输出到error.log

print 等价于 ngx.log(ngx.NOTICE, …)

ngx.send_headers 发送响应头

ngx.headers_sent 响应头是否已发送

ngx.resp.get_headers 获取响应头

ngx.timer.at 注册定时器事件

ngx.is_subrequest 当前请求是否是子请求

ngx.location.capture 发布一个子请求

ngx.location.capture_multi 发布多个子请求

ngx.print 输出响应

ngx.say 输出响应,自动添加’\n’

ngx.flush 刷新响应

ngx.exit 结束请求

ngx.sleep 无阻塞的休眠(使用定时器实现)

ngx.on_abort 注册client断开请求时的回调函数

ngx.req.start_time 请求的开始时间

ngx.req.http_version 请求的HTTP版本号

ngx.req.raw_header 请求头(包括请求行)

ngx.req.get_method 请求方法

ngx.req.set_method 请求方法重载

ngx.req.set_uri 请求URL重写

ngx.req.get_uri_args 获取请求参数

ngx.req.get_post_args 获取请求表单

ngx.req.get_headers 获取请求头

ngx.escape_uri 字符串的url编码

ngx.unescape_uri 字符串url解码

ngx.encode_args 将table编码为一个参数字符串

ngx.decode_args 将参数字符串编码为一个table

ngx.encode_base64 字符串的base64编码

ngx.decode_base64 字符串的base64解码

ngx.crc32_short 字符串的crs32_short哈希

ngx.crc32_long 字符串的crs32_long哈希

ngx.hmac_sha1 字符串的hmac_sha1哈希

ngx.md5 返回16进制MD5

ngx.md5_bin 返回2进制MD5

ngx.sha1_bin 返回2进制sha1哈希值

ngx.quote_sql_str SQL语句转义

ngx.today 返回当前日期

ngx.time 返回UNIX时间戳

ngx.now 返回当前时间

ngx.update_time 刷新时间后再返回

ngx.cookie_time 返回的时间可用于cookie值

ngx.http_time 返回的时间可用于HTTP头

ngx.parse_http_time 解析HTTP头的时间

  下面是有关nginx配置文件相关的字段和意义说明,也顺便mark一下:

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

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

Nginx的主配置文件是:nginx.conf,nginx.conf主要组成如下:

 

# 全局区   有一个工作子进程,一般设置为CPU数 * 核数

worker_processes  1;

events {

    # 一般是配置nginx进程与连接的特性

    # 如1个word能同时允许多少连接,一个子进程最大允许连接1024个连接

     worker_connections  1024;

}

 # 配置HTTP服务器配置段

http {

    # 配置虚拟主机段

    server {

         # 定位,把特殊的路径或文件再次定位。

         location  {

                    

         }

    }

     server {

                    

     }

}

 

#以哪个用户,运行nginx应用

#nobody是个低权限用户,为了安全

#user nobody;

 

#nginx进程数 启动进程,通常设置成 cpu的核数

查看cpu核数

# cat /proc/cpuinfo

worker_processes  1;

 

#全局错误日志

#nginx的error_log类型如下(从左到右:debug最详细 crit最少):

#[ debug | info | notice | warn | error | crit ]

#例如:error_log logs/nginx_error.log  crit;

#解释:日志文件存储在nginx安装目录下的 logs/nginx_error.log ,错误类型为 crit ,也就是记录最少错误信息;

error_log  logs/error.log;

error_log  logs/notice.log  notice;

error_log  logs/info.log  info;

 

#PID文件,记录当前启动的nginx的进程ID

pid        logs/nginx.pid;

 

 

#这个参数表示worker进程最多能打开的文件句柄数,基于linux系统ulimit设置

#查看系统文件句柄数最大值:ulimit -n

#Linux一切皆文件,所有请求过来最终目的访问文件,所以该参数值设置等同于liunx系统ulimit设置为优

#可以通过linux命令设置  最大的文件句柄数65535

 

worker_rlimit_nofile 65535;

 

#工作模式及连接数上限

events {

   #网络模型高效(相当于建立索引查找结果),nginx配置应该启用该参数

   #但是仅用于linux2.6以上内核,可以大大提高nginx的性能

   use   epoll;            

   #该参数表示设置一个worker进程最多开启多少线程数

   #优化设置应该等同于worker_rlimit_nofile设置值,表明一个线程处理一个http请求,同时可以处理一个文件数,各个模块之间协调合作不等待。

   worker_connections  65535;

}

 

#设定http服务器,利用它的反向代理功能提供负载均衡支持

    http {

         #设定mime类型,类型由mime.type文件定义

         #MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来#打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开

        include       /etc/nginx/mime.types;

        default_type  application/octet-stream;

        #设定日志格式

    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    /var/log/nginx/access.log;

 

        #sendfile 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

        sendfile        on;

        tcp_nopush     on; # 防止网络阻塞

        tcp_nodelay        on; # 防止网络阻塞

 

        #连接超时时间

        #keepalive_timeout  0

        keepalive_timeout  65; #长连接超时时间,单位是秒

        

 

        #开启gzip压缩

        gzip  on;

        gzip_disable "MSIE [1-6]\."; # IE6及以下禁止压缩

        gzip_min_length 1k; #最小压缩文件大小

        gzip_buffers 4 16k; #压缩缓冲区

        gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0

        gzip_comp_level 2; #压缩等级

        gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型

        gzip_vary on; #给CDN和代理服务器使用,针对相同url,可以根据头信息返回压缩和非压缩副本

 

 

        #设定请求缓冲

        client_header_buffer_size    1k;   #上传文件大小限制

        large_client_header_buffers  4 4k;  #设定请求缓存

 

 

        #设定负载均衡的服务器列表

        upstream mysvr {

            #weigth参数表示权值,权值越高被分配到的几率越大

            server 192.168.8.1x:3128 weight=5;

            server 192.168.8.2x:80  weight=1;

            server 192.168.8.3x:80  weight=6;

        }

 

        upstream mysvr2 {

            #weigth参数表示权值,权值越高被分配到的几率越大

            server 192.168.8.x:80  weight=1;

            server 192.168.8.x:80  weight=6;

        }

 

        #虚拟主机的配置

       server {

            #侦听80端口

            listen       80;

            #设置编码

         #charset koi8-r;

 

            #定义使用www.xx.com访问 域名可以有多个,用空格隔开

            server_name  www.xx.com;

 

            #设定本虚拟主机的访问日志

            access_log  logs/www.xx.com.access.log  main;

 

        #默认请求

            location / {

              root   /root;      #定义服务器的默认网站根目录位置

              index index.php index.html index.htm;   #定义首页索引文件的名称

 

 

             proxy_pass  http://mysvr ;#请求转向mysvr 定义的服务器列表

 

              client_max_body_size 10m;    #允许客户端请求的最大单文件字节数

              client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,   

 

             #以下是一些反向代理的配置可删除.

 

              proxy_redirect off;

 

              #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

              proxy_set_header Host $host;

              proxy_set_header X-Real-IP $remote_addr;

              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

              proxy_connect_timeout 90;        #nginx跟后端服务器连接超时时间(代理连接超时)

              proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)

              proxy_read_timeout 90;        #连接成功后,后端服务器响应时间(代理接收超时)

              proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小

              proxy_buffers 4 32k;              #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

              proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2

              proxy_temp_file_write_size 64k;   #设定缓存文件夹大小,大于这个值,将从upstream服务器传

 

        }

 

        # 定义错误提示页面

        error_page   500 502 503 504 /50x.html;

            location = /50x.html {

            root   /root;

        }

 

        #本地动静分离反向代理配置

        #所有jsp的页面均交由tomcat或resin处理

        location ~ .(jsp|jspx|do)?$ {

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://127.0.0.1:8080;

        }

 

        #静态文件,nginx自己处理

        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            root /var/www/virtual/htdocs;

            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。

            expires 30d;

        }

 

        #设定查看Nginx状态的地址

        location /NginxStatus {

            stub_status            on;

            access_log              on;

            auth_basic              "NginxStatus";

            auth_basic_user_file  conf/htpasswd;

            #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。

        }

        #禁止访问 .htxxx 文件

        location ~ /\.ht {

            deny all;

        }

 

        }

    }

你可能感兴趣的:(nginx,nginx)