nginxtra 1.0.15.0 → 1.2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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