nginxtra 1.0.15.0 → 1.2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. data/VERSION +1 -1
  2. data/bin/nginxtra +1 -1
  3. data/lib/nginxtra/action.rb +10 -0
  4. data/lib/nginxtra/actions/compile.rb +16 -2
  5. data/lib/nginxtra/actions/start.rb +18 -2
  6. data/lib/nginxtra/actions/status.rb +1 -10
  7. data/lib/nginxtra/actions/stop.rb +18 -0
  8. data/lib/nginxtra/cli.rb +12 -3
  9. data/lib/nginxtra/config.rb +10 -0
  10. data/src/nginx/CHANGES +311 -90
  11. data/src/nginx/CHANGES.ru +315 -88
  12. data/src/nginx/auto/lib/pcre/conf +22 -5
  13. data/src/nginx/auto/lib/pcre/make +1 -1
  14. data/src/nginx/auto/modules +14 -3
  15. data/src/nginx/auto/options +17 -3
  16. data/src/nginx/auto/os/freebsd +8 -0
  17. data/src/nginx/auto/os/linux +5 -4
  18. data/src/nginx/auto/os/solaris +2 -1
  19. data/src/nginx/auto/sources +10 -2
  20. data/src/nginx/auto/summary +2 -0
  21. data/src/nginx/auto/types/sizeof +2 -1
  22. data/src/nginx/auto/types/typedef +1 -1
  23. data/src/nginx/auto/types/uintptr_t +7 -4
  24. data/src/nginx/auto/unix +82 -21
  25. data/src/nginx/conf/fastcgi.conf +1 -0
  26. data/src/nginx/conf/fastcgi_params +1 -0
  27. data/src/nginx/conf/scgi_params +1 -0
  28. data/src/nginx/conf/uwsgi_params +1 -0
  29. data/src/nginx/man/nginx.8 +49 -49
  30. data/src/nginx/src/core/nginx.c +10 -12
  31. data/src/nginx/src/core/nginx.h +2 -2
  32. data/src/nginx/src/core/ngx_buf.c +9 -7
  33. data/src/nginx/src/core/ngx_buf.h +2 -2
  34. data/src/nginx/src/core/ngx_conf_file.c +4 -11
  35. data/src/nginx/src/core/ngx_conf_file.h +1 -1
  36. data/src/nginx/src/core/ngx_connection.c +52 -1
  37. data/src/nginx/src/core/ngx_connection.h +6 -0
  38. data/src/nginx/src/core/ngx_core.h +5 -0
  39. data/src/nginx/src/core/ngx_cycle.c +1 -1
  40. data/src/nginx/src/core/ngx_cycle.h +2 -2
  41. data/src/nginx/src/core/ngx_file.c +1 -1
  42. data/src/nginx/src/core/ngx_inet.c +11 -8
  43. data/src/nginx/src/core/ngx_murmurhash.h +1 -1
  44. data/src/nginx/src/core/ngx_open_file_cache.c +343 -38
  45. data/src/nginx/src/core/ngx_open_file_cache.h +10 -0
  46. data/src/nginx/src/core/ngx_output_chain.c +2 -1
  47. data/src/nginx/src/core/ngx_parse.h +0 -3
  48. data/src/nginx/src/core/ngx_rbtree.c +1 -2
  49. data/src/nginx/src/core/ngx_regex.c +263 -5
  50. data/src/nginx/src/core/ngx_regex.h +6 -2
  51. data/src/nginx/src/core/ngx_resolver.c +88 -21
  52. data/src/nginx/src/core/ngx_resolver.h +7 -8
  53. data/src/nginx/src/core/ngx_shmtx.c +69 -44
  54. data/src/nginx/src/core/ngx_shmtx.h +12 -1
  55. data/src/nginx/src/core/ngx_slab.c +3 -3
  56. data/src/nginx/src/core/ngx_slab.h +1 -1
  57. data/src/nginx/src/core/ngx_string.c +19 -16
  58. data/src/nginx/src/core/ngx_times.c +2 -2
  59. data/src/nginx/src/event/modules/ngx_epoll_module.c +2 -2
  60. data/src/nginx/src/event/modules/ngx_eventport_module.c +1 -1
  61. data/src/nginx/src/event/modules/ngx_kqueue_module.c +1 -1
  62. data/src/nginx/src/event/ngx_event.c +25 -17
  63. data/src/nginx/src/event/ngx_event_openssl.c +3 -1
  64. data/src/nginx/src/event/ngx_event_pipe.c +108 -85
  65. data/src/nginx/src/event/ngx_event_pipe.h +1 -2
  66. data/src/nginx/src/event/ngx_event_timer.c +2 -3
  67. data/src/nginx/src/http/modules/ngx_http_access_module.c +9 -4
  68. data/src/nginx/src/http/modules/ngx_http_browser_module.c +5 -3
  69. data/src/nginx/src/http/modules/ngx_http_chunked_filter_module.c +1 -1
  70. data/src/nginx/src/http/modules/ngx_http_degradation_module.c +1 -1
  71. data/src/nginx/src/http/modules/ngx_http_fastcgi_module.c +144 -22
  72. data/src/nginx/src/http/modules/ngx_http_flv_module.c +8 -0
  73. data/src/nginx/src/http/modules/ngx_http_geo_module.c +3 -3
  74. data/src/nginx/src/http/modules/ngx_http_gzip_filter_module.c +20 -6
  75. data/src/nginx/src/http/modules/ngx_http_gzip_static_module.c +8 -0
  76. data/src/nginx/src/http/modules/ngx_http_headers_filter_module.c +23 -27
  77. data/src/nginx/src/http/modules/ngx_http_image_filter_module.c +1 -3
  78. data/src/nginx/src/http/modules/ngx_http_index_module.c +24 -0
  79. data/src/nginx/src/http/modules/ngx_http_limit_conn_module.c +747 -0
  80. data/src/nginx/src/http/modules/ngx_http_limit_req_module.c +289 -133
  81. data/src/nginx/src/http/modules/ngx_http_log_module.c +34 -6
  82. data/src/nginx/src/http/modules/ngx_http_memcached_module.c +19 -3
  83. data/src/nginx/src/http/modules/ngx_http_mp4_module.c +8 -0
  84. data/src/nginx/src/http/modules/ngx_http_proxy_module.c +1446 -239
  85. data/src/nginx/src/http/modules/ngx_http_realip_module.c +4 -10
  86. data/src/nginx/src/http/modules/ngx_http_scgi_module.c +90 -21
  87. data/src/nginx/src/http/modules/ngx_http_split_clients_module.c +8 -11
  88. data/src/nginx/src/http/modules/ngx_http_ssi_filter_module.c +16 -6
  89. data/src/nginx/src/http/modules/ngx_http_static_module.c +8 -0
  90. data/src/nginx/src/http/modules/ngx_http_upstream_ip_hash_module.c +2 -2
  91. data/src/nginx/src/http/modules/ngx_http_upstream_keepalive_module.c +570 -0
  92. data/src/nginx/src/http/modules/ngx_http_userid_filter_module.c +1 -5
  93. data/src/nginx/src/http/modules/ngx_http_uwsgi_module.c +77 -26
  94. data/src/nginx/src/http/modules/ngx_http_xslt_filter_module.c +171 -37
  95. data/src/nginx/src/http/modules/perl/nginx.pm +2 -1
  96. data/src/nginx/src/http/modules/perl/nginx.xs +4 -0
  97. data/src/nginx/src/http/ngx_http.c +8 -1
  98. data/src/nginx/src/http/ngx_http.h +1 -0
  99. data/src/nginx/src/http/ngx_http_busy_lock.c +2 -2
  100. data/src/nginx/src/http/ngx_http_cache.h +12 -1
  101. data/src/nginx/src/http/ngx_http_copy_filter_module.c +4 -3
  102. data/src/nginx/src/http/ngx_http_core_module.c +303 -37
  103. data/src/nginx/src/http/ngx_http_core_module.h +15 -0
  104. data/src/nginx/src/http/ngx_http_file_cache.c +226 -52
  105. data/src/nginx/src/http/ngx_http_parse.c +69 -3
  106. data/src/nginx/src/http/ngx_http_postpone_filter_module.c +4 -4
  107. data/src/nginx/src/http/ngx_http_request.c +61 -27
  108. data/src/nginx/src/http/ngx_http_request.h +3 -3
  109. data/src/nginx/src/http/ngx_http_request_body.c +1 -1
  110. data/src/nginx/src/http/ngx_http_script.c +6 -0
  111. data/src/nginx/src/http/ngx_http_upstream.c +200 -47
  112. data/src/nginx/src/http/ngx_http_upstream.h +20 -1
  113. data/src/nginx/src/http/ngx_http_upstream_round_robin.c +22 -6
  114. data/src/nginx/src/http/ngx_http_upstream_round_robin.h +1 -0
  115. data/src/nginx/src/http/ngx_http_variables.c +123 -4
  116. data/src/nginx/src/mail/ngx_mail.c +13 -0
  117. data/src/nginx/src/mail/ngx_mail.h +12 -0
  118. data/src/nginx/src/mail/ngx_mail_core_module.c +100 -15
  119. data/src/nginx/src/os/unix/ngx_daemon.c +2 -1
  120. data/src/nginx/src/os/unix/ngx_darwin.h +3 -0
  121. data/src/nginx/src/os/unix/ngx_darwin_config.h +1 -0
  122. data/src/nginx/src/os/unix/ngx_darwin_init.c +30 -0
  123. data/src/nginx/src/os/unix/ngx_darwin_sendfile_chain.c +11 -5
  124. data/src/nginx/src/os/unix/ngx_errno.h +5 -0
  125. data/src/nginx/src/os/unix/ngx_files.h +50 -1
  126. data/src/nginx/src/os/unix/ngx_freebsd.h +2 -1
  127. data/src/nginx/src/os/unix/ngx_freebsd_config.h +2 -0
  128. data/src/nginx/src/os/unix/ngx_freebsd_init.c +4 -3
  129. data/src/nginx/src/os/unix/ngx_freebsd_rfork_thread.c +2 -2
  130. data/src/nginx/src/os/unix/ngx_freebsd_sendfile_chain.c +12 -6
  131. data/src/nginx/src/os/unix/ngx_gcc_atomic_sparc64.h +1 -1
  132. data/src/nginx/src/os/unix/ngx_linux_config.h +1 -0
  133. data/src/nginx/src/os/unix/ngx_linux_sendfile_chain.c +6 -4
  134. data/src/nginx/src/os/unix/ngx_os.h +0 -1
  135. data/src/nginx/src/os/unix/ngx_posix_config.h +3 -0
  136. data/src/nginx/src/os/unix/ngx_process.c +50 -11
  137. data/src/nginx/src/os/unix/ngx_process.h +1 -0
  138. data/src/nginx/src/os/unix/ngx_process_cycle.c +6 -15
  139. data/src/nginx/src/os/unix/ngx_readv_chain.c +8 -0
  140. data/src/nginx/src/os/unix/ngx_setaffinity.c +69 -0
  141. data/src/nginx/src/os/unix/ngx_setaffinity.h +23 -0
  142. data/src/nginx/src/os/unix/ngx_setproctitle.c +1 -1
  143. data/src/nginx/src/os/unix/ngx_solaris_config.h +2 -0
  144. data/src/nginx/src/os/unix/ngx_solaris_sendfilev_chain.c +11 -3
  145. data/src/nginx/src/os/unix/ngx_writev_chain.c +7 -3
  146. metadata +7 -4
  147. data/src/nginx/src/http/modules/ngx_http_limit_zone_module.c +0 -553
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.15.0
1
+ 1.2.0.1
data/bin/nginxtra CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.0.15.0"
3
+ gem "nginxtra", "= 1.2.0.1"
4
4
  require "nginxtra"
5
5
  Nginxtra::CLI.start
@@ -1,5 +1,7 @@
1
1
  module Nginxtra
2
2
  module Action
3
+ @@ignore_force = false
4
+
3
5
  def initialize(thor, config)
4
6
  @thor = thor
5
7
  @config = config
@@ -17,7 +19,15 @@ module Nginxtra
17
19
  raise Nginxtra::Error::RunFailed.new("The last run command failed") unless $?.success?
18
20
  end
19
21
 
22
+ def without_force
23
+ @@ignore_force = true
24
+ yield
25
+ ensure
26
+ @@ignore_force = false
27
+ end
28
+
20
29
  def force?
30
+ return false if @@ignore_force
21
31
  @thor.options["force"]
22
32
  end
23
33
 
@@ -37,18 +37,32 @@ module Nginxtra
37
37
  end
38
38
 
39
39
  # Determine if compiling should happen. This will return false
40
- # if the last compile options equal the current options, or if
41
- # the force option was passed in at construction time.
40
+ # if the last compile options equal the current options and the
41
+ # last compile version is the same as the current nginx version,
42
+ # or if the force option was passed in at construction time.
42
43
  def should_compile?
43
44
  return true if force?
45
+ different_compile_options? || different_nginx_version?
46
+ end
47
+
48
+ # Determine if the compile options differ from those last
49
+ # compiled with.
50
+ def different_compile_options?
44
51
  Nginxtra::Status[:last_compile_options] != @config.compile_options
45
52
  end
46
53
 
54
+ # Determine if the last nginx compiled version is different from
55
+ # the current nginx version.
56
+ def different_nginx_version?
57
+ Nginxtra::Status[:last_compile_version] != Nginxtra::Config.nginx_version
58
+ end
59
+
47
60
  # Update Nginxtra::Status with the last compile time and
48
61
  # options.
49
62
  def update_last_compile
50
63
  Nginxtra::Status[:last_compile_options] = @config.compile_options
51
64
  Nginxtra::Status[:last_compile_time] = Time.now
65
+ Nginxtra::Status[:last_compile_version] = Nginxtra::Config.nginx_version
52
66
  end
53
67
 
54
68
  # Notify the user that the compilation is up to date
@@ -10,8 +10,12 @@ module Nginxtra
10
10
  # configuration is correct, and finally start nginx and note the
11
11
  # start time.
12
12
  def start
13
- compile
14
- install
13
+ without_force do
14
+ compile
15
+ install
16
+ end
17
+
18
+ return no_need_to_start unless should_start?
15
19
  save_config_files
16
20
  start_nginx
17
21
  update_last_start
@@ -39,6 +43,18 @@ module Nginxtra
39
43
  end
40
44
  end
41
45
 
46
+ # Notify the user that nginx is already started.
47
+ def no_need_to_start
48
+ @thor.say "nginx is already started"
49
+ end
50
+
51
+ # Determine if we should even bother starting. This returns
52
+ # true if the user forced, or if nginx is already running.
53
+ def should_start?
54
+ return true if force?
55
+ !Nginxtra::Config.nginx_running?
56
+ end
57
+
42
58
  # Start nginx as a daemon.
43
59
  def start_nginx
44
60
  daemon :start
@@ -11,21 +11,12 @@ module Nginxtra
11
11
  end
12
12
 
13
13
  def colored_message
14
- if running?
14
+ if Nginxtra::Config.nginx_running?
15
15
  @thor.set_color "running", :green, true
16
16
  else
17
17
  @thor.set_color "stopped", :red, true
18
18
  end
19
19
  end
20
-
21
- def running?
22
- return false unless File.exists? Nginxtra::Config.nginx_pidfile
23
- pid = File.read(Nginxtra::Config.nginx_pidfile).strip
24
- Process.getpgid pid.to_i
25
- true
26
- rescue Errno::ESRCH
27
- false
28
- end
29
20
  end
30
21
  end
31
22
  end
@@ -6,7 +6,25 @@ module Nginxtra
6
6
 
7
7
  # Stop nginx and note the new last stop time.
8
8
  def stop
9
+ return no_need_to_stop unless should_stop?
10
+ stop_nginx
11
+ update_last_stop
12
+ end
13
+
14
+ def no_need_to_stop
15
+ @thor.say "nginx is already stopped"
16
+ end
17
+
18
+ def should_stop?
19
+ return true if force?
20
+ Nginxtra::Config.nginx_running?
21
+ end
22
+
23
+ def stop_nginx
9
24
  daemon :stop
25
+ end
26
+
27
+ def update_last_stop
10
28
  Nginxtra::Status[:last_stop_time] = Time.now
11
29
  end
12
30
  end
data/lib/nginxtra/cli.rb CHANGED
@@ -32,14 +32,23 @@ module Nginxtra
32
32
 
33
33
  desc "start", "Start nginx with configuration defined in nginxtra.conf.rb"
34
34
  long_desc "
35
- Start nginx based on nginxtra.conf.rb. If nginx has not yet been compiled, it
36
- will be compiled. The configuration for nginx will automatically be handled by
37
- nginxtra so it matches what is defined in nginxtra.conf.rb."
35
+ Start nginx based on nginxtra.conf.rb. If nginx has not yet been compiled for
36
+ the given compilation options or the current nginx version, it will be compiled.
37
+ If nginxtra has not been installed for the current version, the user will be
38
+ asked if it is ok to install. The configuration for nginx will automatically be
39
+ handled by nginxtra so it matches what is defined in nginxtra.conf.rb. If it is
40
+ already running, this will do nothing, unless --force is passed. Note that
41
+ compilation and installation will NOT be forced with --force option. The
42
+ compile or install task should be invoked if those need to be forced."
38
43
  def start
39
44
  Nginxtra::Actions::Start.new(self, prepare_config!).start
40
45
  end
41
46
 
42
47
  desc "stop", "Stop nginx"
48
+ long_desc "
49
+ Stop nginx, unless it is already running based on the pidfile. If it is
50
+ determined to be running, this command will do nothing, unless --force is passed
51
+ (which will cause it to run the stop command regardless of the pidfile)."
43
52
  def stop
44
53
  Nginxtra::Actions::Stop.new(self, prepare_config!).stop
45
54
  end
@@ -230,6 +230,16 @@ module Nginxtra
230
230
  raise InvalidConfig.new("You cannot reference passenger unless the passenger gem is installed!") if spec.nil?
231
231
  end
232
232
  end
233
+
234
+ # Determine if nginx is running, based on the pidfile.
235
+ def nginx_running?
236
+ return false unless File.exists? nginx_pidfile
237
+ pid = File.read(nginx_pidfile).strip
238
+ Process.getpgid pid.to_i
239
+ true
240
+ rescue Errno::ESRCH
241
+ false
242
+ end
233
243
  end
234
244
 
235
245
  # Represents a config file being defined by nginxtra.conf.rb.
data/src/nginx/CHANGES CHANGED
@@ -1,22 +1,80 @@
1
1
 
2
- Changes with nginx 1.0.15 12 Apr 2012
2
+ Changes with nginx 1.2.0 23 Apr 2012
3
+
4
+ *) Bugfix: a segmentation fault might occur in a worker process if the
5
+ "try_files" directive was used; the bug had appeared in 1.1.19.
6
+
7
+ *) Bugfix: response might be truncated if there were more than IOV_MAX
8
+ buffers used.
9
+
10
+ *) Bugfix: in the "crop" parameter of the "image_filter" directive.
11
+ Thanks to Maxim Bublis.
12
+
13
+
14
+ Changes with nginx 1.1.19 12 Apr 2012
3
15
 
4
16
  *) Security: specially crafted mp4 file might allow to overwrite memory
5
17
  locations in a worker process if the ngx_http_mp4_module was used,
6
18
  potentially resulting in arbitrary code execution (CVE-2012-2089).
7
19
  Thanks to Matthew Daley.
8
20
 
21
+ *) Bugfix: nginx/Windows might be terminated abnormally.
22
+ Thanks to Vincent Lee.
23
+
24
+ *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
25
+ "backup".
26
+
27
+ *) Bugfix: the "allow" and "deny" directives might be inherited
28
+ incorrectly if they were used with IPv6 addresses.
29
+
30
+ *) Bugfix: the "modern_browser" and "ancient_browser" directives might
31
+ be inherited incorrectly.
32
+
33
+ *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC.
34
+
9
35
  *) Bugfix: in the ngx_http_mp4_module.
10
36
 
11
37
 
12
- Changes with nginx 1.0.14 15 Mar 2012
38
+ Changes with nginx 1.1.18 28 Mar 2012
39
+
40
+ *) Change: keepalive connections are no longer disabled for Safari by
41
+ default.
42
+
43
+ *) Feature: the $connection_requests variable.
44
+
45
+ *) Feature: $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and
46
+ $tcpinfo_rcv_space variables.
47
+
48
+ *) Feature: the "worker_cpu_affinity" directive now works on FreeBSD.
49
+
50
+ *) Feature: the "xslt_param" and "xslt_string_param" directives.
51
+ Thanks to Samuel Behan.
52
+
53
+ *) Bugfix: in configure tests.
54
+ Thanks to Piotr Sikora.
55
+
56
+ *) Bugfix: in the ngx_http_xslt_filter_module.
57
+
58
+ *) Bugfix: nginx could not be built on Debian GNU/Hurd.
59
+
60
+
61
+ Changes with nginx 1.1.17 15 Mar 2012
13
62
 
14
63
  *) Security: content of previously freed memory might be sent to a
15
64
  client if backend returned specially crafted response.
16
65
  Thanks to Matthew Daley.
17
66
 
67
+ *) Bugfix: in the embedded perl module if used from SSI.
68
+ Thanks to Matthew Daley.
69
+
70
+ *) Bugfix: in the ngx_http_uwsgi_module.
71
+
72
+
73
+ Changes with nginx 1.1.16 29 Feb 2012
74
+
75
+ *) Change: the simultaneous subrequest limit has been raised to 200.
18
76
 
19
- Changes with nginx 1.0.13 05 Mar 2012
77
+ *) Feature: the "from" parameter of the "disable_symlinks" directive.
20
78
 
21
79
  *) Feature: the "return" and "error_page" directives can now be used to
22
80
  return 307 redirections.
@@ -26,74 +84,113 @@ Changes with nginx 1.0.13 05 Mar 2012
26
84
  specified at global level.
27
85
  Thanks to Roman Arutyunyan.
28
86
 
87
+ *) Bugfix: a segmentation fault might occur in a worker process if the
88
+ "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were
89
+ used.
90
+
29
91
  *) Bugfix: memory leaks.
30
92
  Thanks to Lanshun Zhou.
31
93
 
94
+ *) Bugfix: in the "disable_symlinks" directive.
95
+
96
+ *) Bugfix: on ZFS filesystem disk cache size might be calculated
97
+ incorrectly; the bug had appeared in 1.0.1.
98
+
99
+ *) Bugfix: nginx could not be built by the icc 12.1 compiler.
100
+
101
+ *) Bugfix: nginx could not be built by gcc on Solaris; the bug had
102
+ appeared in 1.1.15.
103
+
104
+
105
+ Changes with nginx 1.1.15 15 Feb 2012
106
+
107
+ *) Feature: the "disable_symlinks" directive.
108
+
109
+ *) Feature: the "proxy_cookie_domain" and "proxy_cookie_path"
110
+ directives.
111
+
32
112
  *) Bugfix: nginx might log incorrect error "upstream prematurely closed
33
113
  connection" instead of correct "upstream sent too big header" one.
34
114
  Thanks to Feibo Li.
35
115
 
36
- *) Bugfix: on ZFS filesystem disk cache size might be calculated
37
- incorrectly; the bug had appeared in 1.0.1.
116
+ *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
117
+ --with-openssl option was used.
38
118
 
39
119
  *) Bugfix: the number of internal redirects to named locations was not
40
120
  limited.
41
121
 
122
+ *) Bugfix: calling $r->flush() multiple times might cause errors in the
123
+ ngx_http_gzip_filter_module.
124
+
42
125
  *) Bugfix: temporary files might be not removed if the "proxy_store"
43
126
  directive was used with SSI includes.
44
127
 
45
128
  *) Bugfix: in some cases non-cacheable variables (such as the $args
46
129
  variable) returned old empty cached value.
47
130
 
131
+ *) Bugfix: a segmentation fault might occur in a worker process if too
132
+ many SSI subrequests were issued simultaneously; the bug had appeared
133
+ in 0.7.25.
134
+
135
+
136
+ Changes with nginx 1.1.14 30 Jan 2012
137
+
138
+ *) Feature: multiple "limit_req" limits may be used simultaneously.
139
+
140
+ *) Bugfix: in error handling while connecting to a backend.
141
+ Thanks to Piotr Sikora.
142
+
143
+ *) Bugfix: in AIO error handling on FreeBSD.
144
+
145
+ *) Bugfix: in the OpenSSL library initialization.
146
+
48
147
  *) Bugfix: the "proxy_redirect" directives might be inherited
49
148
  incorrectly.
50
149
 
51
- *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
52
- --with-openssl option was used.
53
-
54
- *) Bugfix: nginx could not be built by the icc 12.1 compiler.
150
+ *) Bugfix: memory leak during reconfiguration if the "pcre_jit"
151
+ directive was used.
55
152
 
56
153
 
57
- Changes with nginx 1.0.12 06 Feb 2012
154
+ Changes with nginx 1.1.13 16 Jan 2012
58
155
 
59
156
  *) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
60
157
  "ssl_protocols" directive.
61
158
 
62
- *) Feature: the "if" SSI command supports captures in regular
63
- expressions.
64
-
65
- *) Bugfix: the "if" SSI command did not work inside the "block" command.
159
+ *) Bugfix: the "limit_req" directive parameters were not inherited
160
+ correctly; the bug had appeared in 1.1.12.
66
161
 
67
- *) Bugfix: in AIO error handling on FreeBSD.
162
+ *) Bugfix: the "proxy_redirect" directive incorrectly processed
163
+ "Refresh" header if regular expression were used.
68
164
 
69
- *) Bugfix: in the OpenSSL library initialization.
165
+ *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
166
+ did not return answer from cache if there were no live upstreams.
70
167
 
71
168
  *) Bugfix: the "worker_cpu_affinity" directive might not work.
72
169
 
73
- *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
74
- directives might not work.
170
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
171
+ 1.1.12.
75
172
 
76
- *) Bugfix: the "read_ahead" directive might not work combined with
77
- "try_files" and "open_file_cache".
173
+ *) Bugfix: in the ngx_http_mp4_module.
78
174
 
79
- *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
80
- did not return answer from cache if there were no live upstreams.
81
175
 
82
- *) Bugfix: a segmentation fault might occur in a worker process if small
83
- time was used in the "inactive" parameter of the "proxy_cache_path"
84
- directive.
176
+ Changes with nginx 1.1.12 26 Dec 2011
85
177
 
86
- *) Bugfix: responses from cache might hang.
178
+ *) Change: a "proxy_pass" directive without URI part now uses changed
179
+ URI after redirection with the "error_page" directive.
180
+ Thanks to Lanshun Zhou.
87
181
 
88
- *) Bugfix: in error handling while connecting to a backend.
89
- Thanks to Piotr Sikora.
182
+ *) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock",
183
+ "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives.
90
184
 
91
- *) Bugfix: in the "epoll" event method.
92
- Thanks to Yichun Zhang.
185
+ *) Feature: the "pcre_jit" directive.
93
186
 
94
- *) Bugfix: the $sent_http_cache_control variable might contain a wrong
95
- value if the "expires" directive was used.
96
- Thanks to Yichun Zhang.
187
+ *) Feature: the "if" SSI command supports captures in regular
188
+ expressions.
189
+
190
+ *) Bugfix: the "if" SSI command did not work inside the "block" command.
191
+
192
+ *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
193
+ directives might not work.
97
194
 
98
195
  *) Bugfix: the "limit_rate" directive did not allow to use full
99
196
  throughput, even if limit value was very high.
@@ -101,52 +198,114 @@ Changes with nginx 1.0.12 06 Feb 2012
101
198
  *) Bugfix: the "sendfile_max_chunk" directive did not work, if the
102
199
  "limit_rate" directive was used.
103
200
 
104
- *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
105
- 1.0.11.
201
+ *) Bugfix: a "proxy_pass" directive without URI part always used
202
+ original request URI if variables were used.
203
+
204
+ *) Bugfix: a "proxy_pass" directive without URI part might use original
205
+ request after redirection with the "try_files" directive.
206
+ Thanks to Lanshun Zhou.
106
207
 
107
208
  *) Bugfix: in the ngx_http_scgi_module.
108
209
 
109
210
  *) Bugfix: in the ngx_http_mp4_module.
110
211
 
212
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
213
+ 1.1.9.
214
+
215
+
216
+ Changes with nginx 1.1.11 12 Dec 2011
217
+
218
+ *) Feature: the "so_keepalive" parameter of the "listen" directive.
219
+ Thanks to Vsevolod Stakhov.
220
+
221
+ *) Feature: the "if_not_empty" parameter of the
222
+ "fastcgi/scgi/uwsgi_param" directives.
223
+
224
+ *) Feature: the $https variable.
225
+
226
+ *) Feature: the "proxy_redirect" directive supports variables in the
227
+ first parameter.
228
+
229
+ *) Feature: the "proxy_redirect" directive supports regular expressions.
230
+
231
+ *) Bugfix: the $sent_http_cache_control variable might contain a wrong
232
+ value if the "expires" directive was used.
233
+ Thanks to Yichun Zhang.
234
+
235
+ *) Bugfix: the "read_ahead" directive might not work combined with
236
+ "try_files" and "open_file_cache".
237
+
238
+ *) Bugfix: a segmentation fault might occur in a worker process if small
239
+ time was used in the "inactive" parameter of the "proxy_cache_path"
240
+ directive.
241
+
242
+ *) Bugfix: responses from cache might hang.
243
+
244
+
245
+ Changes with nginx 1.1.10 30 Nov 2011
111
246
 
112
- Changes with nginx 1.0.11 15 Dec 2011
247
+ *) Bugfix: a segmentation fault occured in a worker process if AIO was
248
+ used on Linux; the bug had appeared in 1.1.9.
249
+
250
+
251
+ Changes with nginx 1.1.9 28 Nov 2011
113
252
 
114
253
  *) Change: now double quotes are encoded in an "echo" SSI-command
115
254
  output.
116
255
  Thanks to Zaur Abasmirzoev.
117
256
 
118
- *) Feature: the "image_filter_sharpen" directive.
257
+ *) Feature: the "valid" parameter of the "resolver" directive. By
258
+ default TTL returned by a DNS server is used.
259
+ Thanks to Kirill A. Korinskiy.
260
+
261
+ *) Bugfix: nginx might hang after a worker process abnormal termination.
119
262
 
120
263
  *) Bugfix: a segmentation fault might occur in a worker process if SNI
121
- was used; the bug had appeared in 1.0.9.
264
+ was used; the bug had appeared in 1.1.2.
265
+
266
+ *) Bugfix: in the "keepalive_disable" directive; the bug had appeared in
267
+ 1.1.8.
268
+ Thanks to Alexander Usov.
122
269
 
123
270
  *) Bugfix: SIGWINCH signal did not work after first binary upgrade; the
124
- bug had appeared in 1.0.9.
271
+ bug had appeared in 1.1.1.
125
272
 
126
- *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
127
- header lines might be passed to backend while caching; or not passed
128
- without caching if caching was enabled in another part of the
129
- configuration.
273
+ *) Bugfix: backend responses with length not matching "Content-Length"
274
+ header line are no longer cached.
130
275
 
131
276
  *) Bugfix: in the "scgi_param" directive, if complex parameters were
132
277
  used.
133
278
 
134
- *) Bugfix: "add_header" and "expires" directives did not work if a
135
- request was proxied and response status code was 206.
136
-
137
- *) Bugfix: in the "expires @time" directive.
279
+ *) Bugfix: in the "epoll" event method.
280
+ Thanks to Yichun Zhang.
138
281
 
139
282
  *) Bugfix: in the ngx_http_flv_module.
140
283
  Thanks to Piotr Sikora.
141
284
 
142
285
  *) Bugfix: in the ngx_http_mp4_module.
143
286
 
287
+ *) Bugfix: IPv6 addresses are now handled properly in a request line and
288
+ in a "Host" request header line.
289
+
290
+ *) Bugfix: "add_header" and "expires" directives did not work if a
291
+ request was proxied and response status code was 206.
292
+
144
293
  *) Bugfix: nginx could not be built on FreeBSD 10.
145
294
 
146
295
  *) Bugfix: nginx could not be built on AIX.
147
296
 
148
297
 
149
- Changes with nginx 1.0.10 15 Nov 2011
298
+ Changes with nginx 1.1.8 14 Nov 2011
299
+
300
+ *) Change: the ngx_http_limit_zone_module was renamed to the
301
+ ngx_http_limit_conn_module.
302
+
303
+ *) Change: the "limit_zone" directive was superseded by the
304
+ "limit_conn_zone" directive with a new syntax.
305
+
306
+ *) Feature: support for multiple "limit_conn" limits on the same level.
307
+
308
+ *) Feature: the "image_filter_sharpen" directive.
150
309
 
151
310
  *) Bugfix: a segmentation fault might occur in a worker process if
152
311
  resolver got a big DNS response.
@@ -155,34 +314,54 @@ Changes with nginx 1.0.10 15 Nov 2011
155
314
  *) Bugfix: in cache key calculation if internal MD5 implementation was
156
315
  used; the bug had appeared in 1.0.4.
157
316
 
317
+ *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
318
+ header lines might be passed to backend while caching; or not passed
319
+ without caching if caching was enabled in another part of the
320
+ configuration.
321
+
158
322
  *) Bugfix: the module ngx_http_mp4_module sent incorrect
159
323
  "Content-Length" response header line if the "start" argument was
160
324
  used.
161
325
  Thanks to Piotr Sikora.
162
326
 
163
327
 
164
- Changes with nginx 1.0.9 01 Nov 2011
328
+ Changes with nginx 1.1.7 31 Oct 2011
329
+
330
+ *) Feature: support of several DNS servers in the "resolver" directive.
331
+ Thanks to Kirill A. Korinskiy.
332
+
333
+ *) Bugfix: a segmentation fault occurred on start or during
334
+ reconfiguration if the "ssl" directive was used at http level and
335
+ there was no "ssl_certificate" defined.
336
+
337
+ *) Bugfix: reduced memory consumption while proxying big files if they
338
+ were buffered to disk.
339
+
340
+ *) Bugfix: a segmentation fault might occur in a worker process if
341
+ "proxy_http_version 1.1" directive was used.
342
+
343
+ *) Bugfix: in the "expires @time" directive.
344
+
345
+
346
+ Changes with nginx 1.1.6 17 Oct 2011
347
+
348
+ *) Change in internal API: now module context data are cleared while
349
+ internal redirect to named location.
350
+ Requested by Yichun Zhang.
351
+
352
+ *) Change: if a server in an upstream failed, only one request will be
353
+ sent to it after fail_timeout; the server will be considered alive if
354
+ it will successfully respond to the request.
165
355
 
166
356
  *) Change: now the 0x7F-0x1F characters are escaped as \xXX in an
167
357
  access_log.
168
358
 
169
- *) Change: now SIGWINCH signal works only in daemon mode.
170
-
171
359
  *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support
172
360
  the following additional values: X-Accel-Limit-Rate,
173
361
  X-Accel-Buffering, X-Accel-Charset.
174
362
 
175
363
  *) Feature: decrease of memory consumption if SSL is used.
176
364
 
177
- *) Feature: accept filters are now supported on NetBSD.
178
-
179
- *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives.
180
- Thanks to Peter Smit.
181
-
182
- *) Bugfix: a segmentation fault occurred on start or while
183
- reconfiguration if the "ssl" directive was used at http level and
184
- there was no "ssl_certificate" defined.
185
-
186
365
  *) Bugfix: some UTF-8 characters were processed incorrectly.
187
366
  Thanks to Alexey Kuts.
188
367
 
@@ -199,10 +378,18 @@ Changes with nginx 1.0.9 01 Nov 2011
199
378
  *) Bugfix: the module ngx_http_mp4_module did not support seeking on
200
379
  32-bit platforms.
201
380
 
381
+
382
+ Changes with nginx 1.1.5 05 Oct 2011
383
+
384
+ *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives.
385
+ Thanks to Peter Smit.
386
+
202
387
  *) Bugfix: non-cacheable responses might be cached if
203
388
  "proxy_cache_bypass" directive was used.
204
389
  Thanks to John Ferlito.
205
390
 
391
+ *) Bugfix: in HTTP/1.1 support in the ngx_http_proxy_module.
392
+
206
393
  *) Bugfix: cached responses with an empty body were returned
207
394
  incorrectly; the bug had appeared in 0.8.31.
208
395
 
@@ -211,26 +398,17 @@ Changes with nginx 1.0.9 01 Nov 2011
211
398
 
212
399
  *) Bugfix: in the "return" directive.
213
400
 
214
- *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
215
- "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
216
- was used.
401
+ *) Bugfix: the "ssl_session_cache builtin" directive caused segmentation
402
+ fault; the bug had appeared in 1.1.1.
217
403
 
218
404
 
219
- Changes with nginx 1.0.8 01 Oct 2011
405
+ Changes with nginx 1.1.4 20 Sep 2011
220
406
 
221
- *) Bugfix: nginx could not be built --with-http_mp4_module and without
222
- --with-debug option.
223
-
224
-
225
- Changes with nginx 1.0.7 30 Sep 2011
226
-
227
- *) Change: now if total size of all ranges is greater than source
228
- response size, then nginx disables ranges and returns just the source
229
- response.
407
+ *) Feature: the ngx_http_upstream_keepalive module.
230
408
 
231
- *) Feature: the "max_ranges" directive.
409
+ *) Feature: the "proxy_http_version" directive.
232
410
 
233
- *) Feature: the module ngx_http_mp4_module.
411
+ *) Feature: the "fastcgi_keep_conn" directive.
234
412
 
235
413
  *) Feature: the "worker_aio_requests" directive.
236
414
 
@@ -240,17 +418,57 @@ Changes with nginx 1.0.7 30 Sep 2011
240
418
  *) Bugfix: in Linux AIO error processing.
241
419
  Thanks to Hagai Avrahami.
242
420
 
421
+ *) Bugfix: reduced memory consumption for long-lived requests.
422
+
423
+ *) Bugfix: the module ngx_http_mp4_module did not support 64-bit MP4
424
+ "co64" atom.
425
+
426
+
427
+ Changes with nginx 1.1.3 14 Sep 2011
428
+
429
+ *) Feature: the module ngx_http_mp4_module.
430
+
243
431
  *) Bugfix: in Linux AIO combined with open_file_cache.
244
432
 
245
433
  *) Bugfix: open_file_cache did not update file info on retest if file
246
434
  was not atomically changed.
247
435
 
248
- *) Bugfix: reduced memory consumption for long-lived requests.
436
+ *) Bugfix: nginx could not be built on MacOSX 10.7.
437
+
438
+
439
+ Changes with nginx 1.1.2 05 Sep 2011
440
+
441
+ *) Change: now if total size of all ranges is greater than source
442
+ response size, then nginx disables ranges and returns just the source
443
+ response.
444
+
445
+ *) Feature: the "max_ranges" directive.
446
+
447
+ *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
448
+ "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
449
+ was used.
249
450
 
250
451
  *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort"
251
452
  directives.
252
453
 
253
- *) Bugfix: nginx could not be built on MacOSX 10.7.
454
+
455
+ Changes with nginx 1.1.1 22 Aug 2011
456
+
457
+ *) Change: now cache loader processes either as many files as specified
458
+ by "loader_files" parameter or works no longer than time specified by
459
+ the "loader_threshold" parameter during each iteration.
460
+
461
+ *) Change: now SIGWINCH signal works only in daemon mode.
462
+
463
+ *) Feature: now shared zones and caches use POSIX semaphores on Solaris.
464
+ Thanks to Den Ivanov.
465
+
466
+ *) Feature: accept filters are now supported on NetBSD.
467
+
468
+ *) Bugfix: nginx could not be built on Linux 3.0.
469
+
470
+ *) Bugfix: nginx did not use gzipping in some cases; the bug had
471
+ appeared in 1.1.0.
254
472
 
255
473
  *) Bugfix: request body might be processed incorrectly if client used
256
474
  pipelining.
@@ -269,11 +487,18 @@ Changes with nginx 1.0.7 30 Sep 2011
269
487
  *) Bugfix: a segmentation fault might occur in a worker process if many
270
488
  backup servers were used in an upstream.
271
489
 
490
+ *) Bugfix: a segmentation fault might occur in a worker process if
491
+ "fastcgi/scgi/uwsgi_param" directives were used with values starting
492
+ with "HTTP_"; the bug had appeared in 0.8.40.
493
+
272
494
 
273
- Changes with nginx 1.0.6 29 Aug 2011
495
+ Changes with nginx 1.1.0 01 Aug 2011
274
496
 
275
497
  *) Feature: cache loader run time decrease.
276
498
 
499
+ *) Feature: "loader_files", "loader_sleep", and "loader_threshold"
500
+ options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
501
+
277
502
  *) Feature: loading time decrease of configuration with large number of
278
503
  HTTPS sites.
279
504
 
@@ -281,31 +506,27 @@ Changes with nginx 1.0.6 29 Aug 2011
281
506
  Thanks to Adrian Kotelba.
282
507
 
283
508
  *) Feature: the "lingering_close" directive.
284
-
285
- *) Feature: now shared zones and caches use POSIX semaphores on Solaris.
286
- Thanks to Den Ivanov.
287
-
288
- *) Bugfix: nginx could not be built on Linux 3.0.
289
-
290
- *) Bugfix: a segmentation fault might occur in a worker process if
291
- "fastcgi/scgi/uwsgi_param" directives were used with values starting
292
- with "HTTP_"; the bug had appeared in 0.8.40.
509
+ Thanks to Maxim Dounin.
293
510
 
294
511
  *) Bugfix: in closing connection for pipelined requests.
512
+ Thanks to Maxim Dounin.
295
513
 
296
514
  *) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
297
515
  "Accept-Encoding" request header line.
298
516
 
299
517
  *) Bugfix: in timeout in unbuffered proxied mode.
518
+ Thanks to Maxim Dounin.
300
519
 
301
520
  *) Bugfix: memory leaks when a "proxy_pass" directive contains variables
302
521
  and proxies to an HTTPS backend.
522
+ Thanks to Maxim Dounin.
303
523
 
304
524
  *) Bugfix: in parameter validaiton of a "proxy_pass" directive with
305
525
  variables.
306
526
  Thanks to Lanshun Zhou.
307
527
 
308
528
  *) Bugfix: SSL did not work on QNX.
529
+ Thanks to Maxim Dounin.
309
530
 
310
531
  *) Bugfix: SSL modules could not be built by gcc 4.6 without
311
532
  --with-debug option.
@@ -365,8 +586,8 @@ Changes with nginx 1.0.3 25 May 2011
365
586
  testing IPv4 address mapped to IPv6 address, if access or deny rules
366
587
  were defined only for IPv6; the bug had appeared in 0.8.22.
367
588
 
368
- *) Bugfix: a cached response may be broken if proxy/fastcgi/scgi/
369
- uwsgi_cache_bypass and proxy/fastcgi/scgi/uwsgi_no_cache directive
589
+ *) Bugfix: a cached response may be broken if "proxy/fastcgi/scgi/
590
+ uwsgi_cache_bypass" and "proxy/fastcgi/scgi/uwsgi_no_cache" directive
370
591
  values were different; the bug had appeared in 0.8.46.
371
592
 
372
593
 
@@ -2132,7 +2353,7 @@ Changes with nginx 0.7.15 08 Sep 2008
2132
2353
  Changes with nginx 0.7.14 01 Sep 2008
2133
2354
 
2134
2355
  *) Change: now the ssl_certificate and ssl_certificate_key directives
2135
- have not default values.
2356
+ have no default values.
2136
2357
 
2137
2358
  *) Feature: the "listen" directive supports the "ssl" parameter.
2138
2359