forked from alibaba/tengine
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES.ru
8426 lines (5219 loc) · 440 KB
/
CHANGES.ru
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Изменения в nginx 1.15.9 26.02.2019
*) Добавление: директивы ssl_certificate и ssl_certificate_key
поддерживают переменные.
*) Добавление: метод poll теперь доступен на Windows при использовании
Windows Vista и новее.
*) Исправление: если при использовании метода select на Windows
происходила ошибка при установлении соединения с бэкендом, nginx
ожидал истечения таймаута на установление соединения.
*) Исправление: директивы proxy_upload_rate и proxy_download_rate в
модуле stream работали некорректно при проксировании UDP-пакетов.
Изменения в nginx 1.15.8 25.12.2018
*) Добавление: переменная $upstream_bytes_sent.
Спасибо Piotr Sikora.
*) Добавление: новые директивы в скриптах подсветки синтаксиса для vim.
Спасибо Геннадию Махомеду.
*) Исправление: в директиве proxy_cache_background_update.
*) Исправление: в директиве geo при использовании unix domain
listen-сокетов.
*) Изменение: при использовании директивы ssl_early_data с OpenSSL в
логах могли появляться сообщения "ignoring stale global SSL error ...
bad length".
*) Исправление: в nginx/Windows.
*) Исправление: в модуле ngx_http_autoindex_module на 32-битных
платформах.
Изменения в nginx 1.15.7 27.11.2018
*) Добавление: директива proxy_requests в модуле stream.
*) Добавление: параметр "delay" директивы "limit_req".
Спасибо Владиславу Шабанову и Петру Щучкину.
*) Исправление: утечки памяти в случае ошибок при переконфигурации.
*) Исправление: в переменных $upstream_response_time,
$upstream_connect_time и $upstream_header_time.
*) Исправление: в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_mp4_module на 32-битных
платформах.
Изменения в nginx 1.15.6 06.11.2018
*) Безопасность: при использовании HTTP/2 клиент мог вызвать чрезмерное
потреблению памяти (CVE-2018-16843) и ресурсов процессора
(CVE-2018-16844).
*) Безопасность: при обработке специально созданного mp4-файла модулем
ngx_http_mp4_module содержимое памяти рабочего процесса могло быть
отправлено клиенту (CVE-2018-16845).
*) Добавление: директивы proxy_socket_keepalive,
fastcgi_socket_keepalive, grpc_socket_keepalive,
memcached_socket_keepalive, scgi_socket_keepalive и
uwsgi_socket_keepalive.
*) Исправление: если nginx был собран с OpenSSL 1.1.0, а использовался с
OpenSSL 1.1.1, протокол TLS 1.3 всегда был разрешён.
*) Исправление: при работе с gRPC-бэкендами могло расходоваться большое
количество памяти.
Изменения в nginx 1.15.5 02.10.2018
*) Исправление: при использовании OpenSSL 1.1.0h и новее в рабочем
процессе мог произойти segmentation fault; ошибка появилась в 1.15.4.
*) Исправление: незначительных потенциальных ошибок.
Изменения в nginx 1.15.4 25.09.2018
*) Добавление: теперь директиву ssl_early_data можно использовать с
OpenSSL.
*) Исправление: в модуле ngx_http_uwsgi_module.
Спасибо Chris Caputo.
*) Исправление: соединения к некоторым gRPC-бэкендам могли не
кэшироваться при использовании директивы keepalive.
*) Исправление: при использовании директивы error_page для
перенаправления ошибок, возникающих на ранних этапах обработки
запроса, в частности ошибок с кодом 400, могла происходить утечка
сокетов.
*) Исправление: директива return при возврате ошибок не изменяла код
ответа, если запрос был перенаправлен с помощью директивы error_page.
*) Исправление: стандартные сообщения об ошибках и ответы модуля
ngx_http_autoindex_module содержали атрибут bgcolor, что могло
приводить к их некорректному отображению при использовании
пользовательских настроек цветов в браузерах.
Спасибо Nova DasSarma.
*) Изменение: уровень логгирования ошибок SSL "no suitable key share" и
"no suitable signature algorithm" понижен с уровня crit до info.
Изменения в nginx 1.15.3 28.08.2018
*) Добавление: теперь TLSv1.3 можно использовать с BoringSSL.
*) Добавление: директива ssl_early_data, сейчас доступна при
использовании BoringSSL.
*) Добавление: директивы keepalive_timeout и keepalive_requests в блоке
upstream.
*) Исправление: модуль ngx_http_dav_module при копировании файла поверх
существующего файла с помощью метода COPY не обнулял целевой файл.
*) Исправление: модуль ngx_http_dav_module при перемещении файла между
файловыми системами с помощью метода MOVE устанавливал нулевые права
доступа на результирующий файл и не сохранял время изменения файла.
*) Исправление: модуль ngx_http_dav_module при копировании файла с
помощью метода COPY для результирующего файла использовал права
доступа по умолчанию.
*) Изменение: некоторые клиенты могли не работать при использовании
HTTP/2; ошибка появилась в 1.13.5.
*) Исправление: nginx не собирался с LibreSSL 2.8.0.
Изменения в nginx 1.15.2 24.07.2018
*) Добавление: переменная $ssl_preread_protocol в модуле
ngx_stream_ssl_preread_module.
*) Добавление: теперь при использовании директивы
reset_timedout_connection nginx сбрасывает соединения, закрываемые с
кодом 444.
*) Изменение: уровень логгирования ошибок SSL "http request", "https
proxy request", "unsupported protocol" и "version too low" понижен с
уровня crit до info.
*) Исправление: запросы к DNS-серверу не отправлялись повторно, если при
первой попытке отправки происходила ошибка.
*) Исправление: параметр reuseport директивы listen игнорировался, если
количество рабочих процессов было задано после директивы listen.
*) Исправление: при использовании OpenSSL 1.1.0 и новее директиву
ssl_prefer_server_ciphers нельзя было выключить в виртуальном
сервере, если она была включена в сервере по умолчанию.
*) Исправление: повторное использование SSL-сессий к бэкендам не
работало с протоколом TLS 1.3.
Изменения в nginx 1.15.1 03.07.2018
*) Добавление: директива random в блоке upstream.
*) Добавление: улучшена производительность при использовании директив
hash и ip_hash совместно с директивой zone.
*) Добавление: параметр reuseport директивы listen теперь использует
SO_REUSEPORT_LB на FreeBSD 12.
*) Исправление: HTTP/2 server push не работал, если SSL терминировался
прокси-сервером перед nginx'ом.
*) Исправление: директива tcp_nopush всегда использовалась для
соединений к бэкендам.
*) Исправление: при отправке сохранённого на диск тела запроса на
gRPC-бэкенд могли возникать ошибки.
Изменения в nginx 1.15.0 05.06.2018
*) Изменение: директива "ssl" теперь считается устаревшей; вместо неё
следует использовать параметр ssl директивы listen.
*) Изменение: теперь при использовании директивы listen с параметром ssl
nginx определяет отсутствие SSL-сертификатов при тестировании
конфигурации.
*) Добавление: теперь модуль stream умеет обрабатывать несколько
входящих UDP-пакетов от клиента в рамках одной сессии.
*) Исправление: в директиве proxy_cache_valid можно было указать
некорректный код ответа.
*) Исправление: nginx не собирался gcc 8.1.
*) Исправление: логгирование в syslog останавливалось при изменении
локального IP-адреса.
*) Исправление: nginx не собирался компилятором clang, если был
установлен CUDA SDK; ошибка появилась в 1.13.8.
*) Исправление: при использовании unix domain listen-сокетов на FreeBSD
в процессе обновления исполняемого файла в логе могли появляться
сообщения "getsockopt(TCP_FASTOPEN) ... failed".
*) Исправление: nginx не собирался на Fedora 28 Linux.
*) Исправление: при использовании директивы limit_req заданная скорость
обработки запросов могла не соблюдаться.
*) Исправление: в обработке адресов клиентов при использовании unix
domain listen-сокетов для работы с датаграммами на Linux.
*) Исправление: в обработке ошибок выделения памяти.
Изменения в nginx 1.13.12 10.04.2018
*) Исправление: при возврате большого ответа соединения с gRPC-бэкендами
могли неожиданно закрываться.
Изменения в nginx 1.13.11 03.04.2018
*) Добавление: параметр proxy_protocol директивы listen теперь
поддерживает протокол PROXY версии 2.
*) Исправление: nginx не собирался с OpenSSL 1.1.1 статически на Linux.
*) Исправление: в параметрах http_404, http_500 и им подобных директивы
proxy_next_upstream.
Изменения в nginx 1.13.10 20.03.2018
*) Добавление: теперь параметр set в SSI-директиве include позволяет
сохранять в переменную любые ответы; максимальный размер ответа
задаётся директивой subrequest_output_buffer_size.
*) Добавление: теперь nginx использует вызов
clock_gettime(CLOCK_MONOTONIC), если он доступен, что позволяет
избежать некорректного срабатывания таймаутов при изменениях
системного времени.
*) Добавление: параметр "escape=none" директивы log_format.
Спасибо Johannes Baiter и Calin Don.
*) Добавление: переменная $ssl_preread_alpn_protocols в модуле
ngx_stream_ssl_preread_module.
*) Добавление: модуль ngx_http_grpc_module.
*) Исправление: в обработке ошибок выделения памяти в директиве geo.
*) Исправление: при использовании переменных в директиве
auth_basic_user_file в лог мог выводиться символ '\0'.
Спасибо Вадиму Филимонову.
Изменения в nginx 1.13.9 20.02.2018
*) Добавление: поддержка HTTP/2 server push; директивы http2_push и
http2_push_preload.
*) Исправление: при использовании кэша в логах могли появляться
сообщения "header already sent"; ошибка появилась в 1.9.13.
*) Исправление: при использовании директивы ssl_verify_client в рабочем
процессе мог произойти segmentation fault, если в виртуальном сервере
не был указан SSL-сертификат.
*) Исправление: в модуле ngx_http_v2_module.
*) Исправление: в модуле ngx_http_dav_module.
Изменения в nginx 1.13.8 26.12.2017
*) Добавление: теперь при использовании параметра transparent директив
proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind
nginx автоматически сохраняет capability CAP_NET_RAW в рабочих
процессах.
*) Добавление: улучшения в определении размера строки кэша процессора.
Спасибо Debayan Ghosh.
*) Добавление: новые директивы в скриптах подсветки синтаксиса для vim.
Спасибо Геннадию Махомеду.
*) Исправление: процедура обновления исполняемого файла не работала,
если после завершения родительского процесса новым родительским
процессом nginx'а становился процесс с PID, отличным от 1.
*) Исправление: модуль ngx_http_autoindex_module неправильно обрабатывал
запросы с телом.
*) Исправление: в директиве proxy_limit_rate при использовании с
директивой keepalive.
*) Исправление: при использовании "proxy_buffering off" часть ответа
могла буферизироваться, если клиентское соединение использовало SSL.
Спасибо Patryk Lesiewicz.
*) Исправление: в директиве proxy_cache_background_update.
*) Исправление: переменную вида "${name}" с именем в фигурных скобках
нельзя было использовать в начале параметра не заключив весь параметр
в кавычки.
Изменения в nginx 1.13.7 21.11.2017
*) Исправление: в переменной $upstream_status.
*) Исправление: в рабочем процессе мог произойти segmentation fault,
если бэкенд возвращал ответ "101 Switching Protocols" на подзапрос.
*) Исправление: если при переконфигурации изменялся размер зоны
разделяемой памяти и переконфигурация завершалась неудачно, то в
главном процессе происходил segmentation fault.
*) Исправление: в модуле ngx_http_fastcgi_module.
*) Исправление: nginx возвращал ошибку 500, если в директиве
xslt_stylesheet были заданы параметры без использования переменных.
*) Изменение: при использовании варианта библиотеки zlib от Intel в лог
писались сообщения "gzip filter failed to use preallocated memory".
*) Исправление: директива worker_shutdown_timeout не работала при
использовании почтового прокси-сервера и при проксировании
WebSocket-соединений.
Изменения в nginx 1.13.6 10.10.2017
*) Исправление: при использовании директивы ssl_preread в модуле stream
не работало переключение на следующий бэкенд.
*) Исправление: в модуле ngx_http_v2_module.
Спасибо Piotr Sikora.
*) Исправление: nginx не поддерживал даты после 2038 года на 32-битных
платформах с 64-битным time_t.
*) Исправление: в обработке дат до 1970 года и после 10000 года.
*) Исправление: в модуле stream таймауты ожидания UDP-пакетов от
бэкендов не логгировались или логгировались на уровне info вместо
error.
*) Исправление: при использовании HTTP/2 nginx мог вернуть ошибку 400,
не указав в логе причину.
*) Исправление: в обработке повреждённых файлов кэша.
*) Исправление: при кэшировании ошибок, перехваченных error_page, не
учитывались заголовки управления кэшированием.
*) Исправление: при использовании HTTP/2 тело запроса могло быть
повреждено.
*) Исправление: в обработке адресов клиентов при использовании unix
domain сокетов.
*) Исправление: при использовании директивы "hash ... consistent" в
блоке upstream nginx нагружал процессор, если использовались большие
веса и все или почти все бэкенды были недоступны.
Изменения в nginx 1.13.5 05.09.2017
*) Добавление: переменная $ssl_client_escaped_cert.
*) Исправление: директива ssl_session_ticket_key и параметр include
директивы geo не работали на Windows.
*) Исправление: на 32-битных платформах при запросе более 4 гигабайт с
помощью нескольких диапазонов возвращалась некорректная длина ответа.
*) Исправление: директива "expires modified" и обработка строки If-Range
заголовка запроса не учитывали время последнего изменения ответа,
если использовалось проксирование без кэширования.
Изменения в nginx 1.13.4 08.08.2017
*) Добавление: модуль ngx_http_mirror_module.
*) Исправление: клиентские соединения могли сбрасываться при
тестировании конфигурации, если использовался параметр reuseport
директивы listen на Linux.
*) Исправление: тело запроса могло быть недоступно в подзапросах, если
оно было сохранено в файл и использовалось проксирование.
*) Исправление: очистка кэша по max_size не работала на Windows.
*) Исправление: любое выделение разделяемой памяти на Windows требовало
4096 байт памяти.
*) Исправление: при использовании директивы zone в блоке upstream на
Windows рабочий процесс мог завершаться аварийно.
Изменения в nginx 1.13.3 11.07.2017
*) Безопасность: специально созданный запрос мог вызвать целочисленное
переполнение в range-фильтре и последующую некорректную обработку
запрошенных диапазонов, что потенциально могло привести к утечке
конфиденциальной информации (CVE-2017-7529).
Изменения в nginx 1.13.2 27.06.2017
*) Изменение: теперь при запросе диапазона, начинающегося с 0, из
пустого файла nginx возвращает ответ 200 вместо 416.
*) Добавление: директива add_trailer.
Спасибо Piotr Sikora.
*) Исправление: nginx не собирался под Cygwin и NetBSD; ошибка появилась
в 1.13.0.
*) Исправление: nginx не собирался под MSYS2 / MinGW 64-bit.
Спасибо Orgad Shaneh.
*) Исправление: при использовании SSI с большим количеством подзапросов
и proxy_pass с переменными в рабочем процессе мог произойти
segmentation fault.
*) Исправление: в модуле ngx_http_v2_module.
Спасибо Piotr Sikora.
Изменения в nginx 1.13.1 30.05.2017
*) Добавление: теперь в качестве параметра директивы set_real_ip_from
можно указывать имя хоста.
*) Добавление: улучшения в скриптах подсветки синтаксиса для vim.
*) Добавление: директива worker_cpu_affinity теперь работает на
DragonFly BSD.
Спасибо Sepherosa Ziehau.
*) Исправление: SSL renegotiation в соединениях к бэкендам не работал
при использовании OpenSSL до 1.1.0.
*) Изменение: nginx не собирался с Oracle Developer Studio 12.5.
*) Изменение: теперь cache manager пропускает заблокированные записи при
очистке кэша по max_size.
*) Исправление: клиентские SSL-соединения сразу закрывались, если
использовался отложенный accept и параметр proxy_protocol директивы
listen.
*) Исправление: в директиве proxy_cache_background_update.
*) Изменение: теперь директива tcp_nodelay устанавливает опцию
TCP_NODELAY перед SSL handshake.
Изменения в nginx 1.13.0 25.04.2017
*) Изменение: теперь SSL renegotiation допускается в соединениях к
бэкендам.
*) Добавление: параметры rcvbuf и sndbuf директив listen в почтовом
прокси-сервере и модуле stream.
*) Добавление: директивы return и error_page теперь могут использоваться
для возврата перенаправлений с кодом 308.
Спасибо Simon Leblanc.
*) Добавление: параметр TLSv1.3 в директиве ssl_protocols.
*) Добавление: при логгировании сигналов теперь указывается PID
отправившего сигнал процесса.
*) Исправление: в обработке ошибок выделения памяти.
*) Исправление: если сервер в модуле stream слушал на wildcard-адресе,
исходящий адрес ответного UDP-пакета мог отличаться от адреса
назначения исходного пакета.
Изменения в nginx 1.11.13 04.04.2017
*) Добавление: параметр http_429 в директивах proxy_next_upstream,
fastcgi_next_upstream, scgi_next_upstream и uwsgi_next_upstream.
Спасибо Piotr Sikora.
*) Исправление: в обработке ошибок выделения памяти.
*) Исправление: при использовании директив sendfile и timer_resolution
на Linux запросы могли зависать.
*) Исправление: при использовании с подзапросами директив sendfile и
aio_write запросы могли зависать.
*) Исправление: в модуле ngx_http_v2_module.
Спасибо Piotr Sikora.
*) Исправление: при использовании HTTP/2 в рабочем процессе мог
произойти segmentation fault.
*) Исправление: запросы могли зависать при использовании с подзапросами
директив limit_rate, sendfile_max_chunk, limit_req или метода
$r->sleep() встроенного перла.
*) Исправление: в модуле ngx_http_slice_module.
Изменения в nginx 1.11.12 24.03.2017
*) Исправление: nginx мог нагружать процессор; ошибка появилась в
1.11.11.
Изменения в nginx 1.11.11 21.03.2017
*) Добавление: директива worker_shutdown_timeout.
*) Добавление: улучшения в скриптах подсветки синтаксиса для vim.
Спасибо Wei-Ko Kao.
*) Исправление: при попытке установить переменную $limit_rate в пустую
строку в рабочем процессе мог произойти segmentation fault.
*) Исправление: директивы proxy_cache_background_update,
fastcgi_cache_background_update, scgi_cache_background_update и
uwsgi_cache_background_update могли работать некорректно, если
использовалась директива if.
*) Исправление: в рабочем процессе мог произойти segmentation fault,
если количество large_client_header_buffers в виртуальном сервере
отличалось от такового в сервере по умолчанию.
*) Исправление: в почтовом прокси-сервере.
Изменения в nginx 1.11.10 14.02.2017
*) Изменение: формат заголовка кэша был изменен, ранее закэшированные
ответы будут загружены заново.
*) Добавление: поддержка расширений stale-while-revalidate и
stale-if-error в строке "Cache-Control" в заголовке ответа бэкенда.
*) Добавление: директивы proxy_cache_background_update,
fastcgi_cache_background_update, scgi_cache_background_update и
uwsgi_cache_background_update.
*) Добавление: теперь nginx может кэшировать ответы со строкой Vary
заголовка длиной до 128 символов (вместо 42 символов в предыдущих
версиях).
*) Добавление: параметр build директивы server_tokens.
Спасибо Tom Thorogood.
*) Исправление: при обработке запросов со строкой "Expect: 100-continue"
в заголовке запроса в логах могли появляться сообщения "[crit]
SSL_write() failed".
*) Исправление: модуль ngx_http_slice_module не работал в именованных
location'ах.
*) Исправление: при использовании AIO после перенаправления запроса с
помощью X-Accel-Redirect в рабочем процессе мог произойти
segmentation fault.
*) Исправление: уменьшено потребление памяти для долгоживущих запросов,
использующих сжатие.
Изменения в nginx 1.11.9 24.01.2017
*) Исправление: при использовании модуля stream nginx мог нагружать
процессор; ошибка появилась в 1.11.5.
*) Исправление: метод аутентификации EXTERNAL в почтовом прокси-сервере
можно было использовать, даже если он не был разрешён в конфигурации.
*) Исправление: при использовании директивы ssl_verify_client модуля
stream в рабочем процессе мог произойти segmentation fault.
*) Исправление: директива ssl_verify_client модуля stream могла не
работать.
*) Исправление: при исчерпании рабочим процессом свободных соединений
keepalive-соединения могли закрываться излишне агрессивно.
Спасибо Joel Cunningham.
*) Исправление: при использовании директивы sendfile на FreeBSD и macOS
мог возвращаться некорректный ответ; ошибка появилась в 1.7.8.
*) Исправление: при использовании директивы aio_write ответ мог
сохраняться в кэш не полностью.
*) Исправление: при использовании директивы aio_write могла происходить
утечка сокетов.
Изменения в nginx 1.11.8 27.12.2016
*) Добавление: директива absolute_redirect.
*) Добавление: параметр escape директивы log_format.
*) Добавление: проверка клиентских SSL-сертификатов в модуле stream.
*) Добавление: директива ssl_session_ticket_key поддерживает шифрование
TLS session tickets с помощью AES256 при использовании с 80-байтными
ключами.
*) Добавление: поддержка vim-commentary в скриптах для vim.
Спасибо Armin Grodon.
*) Исправление: рекурсия при получении значений переменных не
ограничивалась.
*) Исправление: в модуле ngx_stream_ssl_preread_module.
*) Исправление: если сервер, описанный в блоке upstream в модуле stream,
был признан неработающим, то после истечения fail_timeout он
признавался работающим только после завершения тестового соединения;
теперь достаточно, чтобы соединение было успешно установлено.
*) Исправление: nginx/Windows не собирался с 64-битным Visual Studio.
*) Исправление: nginx/Windows не собирался с OpenSSL 1.1.0.
Изменения в nginx 1.11.7 13.12.2016
*) Изменение: переменная $ssl_client_verify теперь в случае ошибки
проверки клиентского сертификата содержит строку с описанием ошибки,
например, "FAILED:certificate has expired".
*) Добавление: переменные $ssl_ciphers, $ssl_curves,
$ssl_client_v_start, $ssl_client_v_end и $ssl_client_v_remain.
*) Добавление: параметр volatile директивы map.
*) Исправление: при сборке динамических модулей не учитывались заданные
для модуля зависимости.
*) Исправление: при использовании HTTP/2 и директив limit_req или
auth_request тело запроса могло быть повреждено; ошибка появилась в
1.11.0.
*) Исправление: при использовании HTTP/2 в рабочем процессе мог
произойти segmentation fault; ошибка появилась в 1.11.3.
*) Исправление: в модуле ngx_http_mp4_module.
Спасибо Congcong Hu.
*) Исправление: в модуле ngx_http_perl_module.
Изменения в nginx 1.11.6 15.11.2016
*) Изменение: формат переменных $ssl_client_s_dn и $ssl_client_i_dn
изменён на соответствующий RFC 2253 (RFC 4514); значения в старом
формате доступны через переменные $ssl_client_s_dn_legacy и
$ssl_client_i_dn_legacy.
*) Изменение: при сохранении временных файлов в каталоге кэша они теперь
располагаются не в отдельном подкаталоге для временных файлов, а в
том же подкаталоге, что и соответствующие файлы в кэше.
*) Добавление: поддержка метода аутентификации EXTERNAL в почтовом
прокси-сервере.
Спасибо Robert Norris.
*) Добавление: поддержка WebP в модуле ngx_http_image_filter_module.
*) Добавление: директива proxy_method поддерживает переменные.
Спасибо Дмитрию Лазуркину.
*) Добавление: директива http2_max_requests в модуле ngx_http_v2_module.
*) Добавление: директивы proxy_cache_max_range_offset,
fastcgi_cache_max_range_offset, scgi_cache_max_range_offset и
uwsgi_cache_max_range_offset.
*) Исправление: плавное завершение старых рабочих процессов могло
занимать бесконечное время при использовании HTTP/2.
*) Исправление: в модуле ngx_http_mp4_module.
*) Исправление: при проксировании WebSocket-соединений и включённом
кэшировании в логах могли появляться сообщения "ignore long locked
inactive cache entry".
*) Исправление: если во время SSL handshake с бэкендом происходил
таймаут, nginx ничего не писал в лог и возвращал ответ с кодом 502
вместо 504.
Изменения в nginx 1.11.5 11.10.2016
*) Изменение: параметр configure --with-ipv6 упразднён, поддержка IPv6
теперь собирается автоматически.
*) Изменение: теперь, если в блоке upstream не оказалось доступных
серверов, nginx не сбрасывает статистику ошибок всех серверов, как
делал ранее, а ожидает истечения fail_timeout.
*) Добавление: модуль ngx_stream_ssl_preread_module.
*) Добавление: директива server в блоке upstream поддерживает параметр
max_conns.
*) Добавление: параметр configure --with-compat.
*) Добавление: параметры manager_files, manager_threshold и
manager_sleep директив proxy_cache_path, fastcgi_cache_path,
scgi_cache_path и uwsgi_cache_path.
*) Исправление: при сборке perl-модуля не использовались флаги, заданные
с помощью параметра configure --with-ld-opt.
*) Исправление: в директиве add_after_body при использовании совместно с
директивой sub_filter.
*) Исправление: в переменной $realip_remote_addr.
*) Исправление: директивы dav_access, proxy_store_access,
fastcgi_store_access, scgi_store_access и uwsgi_store_access
игнорировали права, заданные для пользователя.
*) Исправление: unix domain listen-сокеты могли не наследоваться при
обновлении исполняемого файла на Linux.
*) Исправление: nginx возвращал ошибку 400 на запросы с символом "-" в
HTTP-методе.
Изменения в nginx 1.11.4 13.09.2016
*) Добавление: переменная $upstream_bytes_received.
*) Добавление: переменные $bytes_received, $session_time, $protocol,
$status, $upstream_addr, $upstream_bytes_sent,
$upstream_bytes_received, $upstream_connect_time,
$upstream_first_byte_time и $upstream_session_time в модуле stream.
*) Добавление: модуль ngx_stream_log_module.
*) Добавление: параметр proxy_protocol в директиве listen, переменные
$proxy_protocol_addr и $proxy_protocol_port в модуле stream.
*) Добавление: модуль ngx_stream_realip_module.
*) Исправление: nginx не собирался с модулем stream и модулем
ngx_http_ssl_module, но без модуля ngx_stream_ssl_module; ошибка
появилась в 1.11.3.
*) Добавление: опция сокета IP_BIND_ADDRESS_NO_PORT не использовалась;
ошибка появилась в 1.11.2.
*) Исправление: в параметре ranges директивы geo.
*) Исправление: при использовании директив "aio threads" и sendfile мог
возвращаться некорректный ответ; ошибка появилась в 1.9.13.
Изменения в nginx 1.11.3 26.07.2016
*) Изменение: теперь accept_mutex по умолчанию выключен.
*) Добавление: теперь nginx использует EPOLLEXCLUSIVE на Linux.
*) Добавление: модуль ngx_stream_geo_module.
*) Добавление: модуль ngx_stream_geoip_module.
*) Добавление: модуль ngx_stream_split_clients_module.
*) Добавление: директивы proxy_pass и proxy_ssl_name в модуле stream
поддерживают переменные.
*) Исправление: утечки сокетов при использовании HTTP/2.
*) Исправление: в configure.
Спасибо Piotr Sikora.
Изменения в nginx 1.11.2 05.07.2016
*) Изменение: теперь nginx всегда использует внутренние реализации MD5 и
SHA1; параметры configure --with-md5 и --with-sha1 упразднены.
*) Добавление: поддержка переменных в модуле stream.
*) Добавление: модуль ngx_stream_map_module.
*) Добавление: модуль ngx_stream_return_module.
*) Добавление: в директивах proxy_bind, fastcgi_bind, memcached_bind,
scgi_bind и uwsgi_bind теперь можно указывать порт.
*) Добавление: теперь nginx использует опцию сокета
IP_BIND_ADDRESS_NO_PORT, если она доступна.
*) Исправление: при использовании HTTP/2 и директивы
proxy_request_buffering в рабочем процессе мог произойти segmentation
fault.
*) Исправление: при использовании HTTP/2 к запросам, передаваемым на
бэкенд, всегда добавлялась строка заголовка "Content-Length", даже
если у запроса не было тела.
*) Исправление: при использовании HTTP/2 в логах могли появляться
сообщения "http request count is zero".
*) Исправление: при использовании директивы sub_filter могло
буферизироваться больше данных, чем это необходимо; проблема
появилась в 1.9.4.
Изменения в nginx 1.11.1 31.05.2016
*) Безопасность: при записи тела специально созданного запроса во
временный файл в рабочем процессе мог происходить segmentation fault
(CVE-2016-4450); ошибка появилась в 1.3.9.
Изменения в nginx 1.11.0 24.05.2016
*) Добавление: параметр transparent директив proxy_bind, fastcgi_bind,
memcached_bind, scgi_bind и uwsgi_bind.
*) Добавление: переменная $request_id.
*) Добавление: директива map поддерживает комбинации нескольких
переменных в качестве результирующих значений.
*) Добавление: теперь при использовании метода epoll nginx проверяет,
поддерживает ли ядро события EPOLLRDHUP, и соответственно
оптимизирует обработку соединений.
*) Добавление: директивы ssl_certificate и ssl_certificate_key теперь
можно указывать несколько раз для загрузки сертификатов разных типов
(например, RSA и ECDSA).
*) Добавление: при использовании OpenSSL 1.0.2 и новее с помощью
директивы ssl_ecdh_curve теперь можно задать список кривых; по
умолчанию используется встроенный в OpenSSL список кривых.
*) Изменение: для использования DHE-шифров теперь надо явно задавать
файл параметров с помощью директивы ssl_dhparam.
*) Добавление: переменная $proxy_protocol_port.
*) Добавление: переменная $realip_remote_port в модуле
ngx_http_realip_module.
*) Добавление: модуль ngx_http_realip_module теперь позволяет
устанавливать не только адрес, но и порт клиента.
*) Изменение: при попытке запросить виртуальный сервер, отличающийся от
согласованного в процессе SSL handshake, теперь возвращается ответ
"421 Misdirected Request"; это улучшает совместимость с некоторыми
HTTP/2-клиентами в случае использования клиентских сертификатов.
*) Изменение: HTTP/2-клиенты теперь могут сразу присылать тело запроса;
директива http2_body_preread_size позволяет указать размер буфера,
который будет использоваться до того, как nginx начнёт читать тело.
*) Исправление: при использовании директивы proxy_cache_bypass не
обновлялись закэшированные ошибочные ответы.
Изменения в nginx 1.9.15 19.04.2016
*) Исправление: при использовании HHVM в качестве FastCGI-сервера могли
возникать ошибки "recv() failed".
*) Исправление: при использовании HTTP/2 и директив limit_req или
auth_request при чтении тела запроса мог произойти таймаут или ошибка
"client violated flow control"; ошибка появилась в 1.9.14.
*) Изменение: при использовании HTTP/2 ответ мог не показываться
некоторыми браузерами, если тело запроса было прочитано не целиком;
ошибка появилась в 1.9.14.
*) Исправление: при использовании директивы "aio threads" соединения
могли зависать.
Спасибо Mindaugas Rasiukevicius.
Изменения в nginx 1.9.14 05.04.2016
*) Добавление: совместимость с OpenSSL 1.1.0.
*) Добавление: директивы proxy_request_buffering,
fastcgi_request_buffering, scgi_request_buffering и
uwsgi_request_buffering теперь работают при использовании HTTP/2.
*) Исправление: при использовании HTTP/2 в логах могли появляться
сообщения "zero size buf in output".
*) Исправление: при использовании HTTP/2 директива client_max_body_size
могла работать неверно.
*) Исправление: незначительных ошибок логгирования.
Изменения в nginx 1.9.13 29.03.2016
*) Изменение: неидемпотентные запросы (POST, LOCK, PATCH) теперь по
умолчанию не передаются на другой сервер, если запрос уже был
отправлен на бэкенд; параметр non_idempotent директивы
proxy_next_upstream явно разрешает повторять такие запросы.
*) Добавление: модуль ngx_http_perl_module теперь можно собрать
динамически.
*) Добавление: поддержка UDP в модуле stream.
*) Добавление: директива aio_write.
*) Добавление: теперь cache manager следит за количеством элементов в
кэше и старается не допускать переполнений зоны разделяемой памяти.
*) Исправление: при использовании директив sendfile и aio с подзапросами
в логах могли появляться сообщения "task already active" и "second
aio post".
*) Исправление: при использовании кэширования в логах могли появляться
сообщения "zero size buf in output", если клиент закрывал соединение
преждевременно.
*) Исправление: при использовании кэширования соединения с клиентами
могли закрываться без необходимости.
Спасибо Justin Li.
*) Исправление: nginx мог нагружать процессор при использовании
директивы sendfile на Linux и Solaris, если отправляемый файл был
изменён в процессе отправки.
*) Исправление: при использовании директив sendfile и "aio threads"
соединения могли зависать.
*) Исправление: в директивах proxy_pass, fastcgi_pass, scgi_pass и
uwsgi_pass при использовании переменных.
Спасибо Piotr Sikora.
*) Исправление: в модуле ngx_http_sub_filter_module.
*) Исправление: если в закэшированном соединении к бэкенду происходила
ошибка, запрос передавался на другой сервер без учёта директивы
proxy_next_upstream.
*) Исправление: ошибки "CreateFile() failed" при создании временных
файлов на Windows.
Изменения в nginx 1.9.12 24.02.2016
*) Добавление: кодирование Хаффмана заголовков ответов в HTTP/2.
Спасибо Владу Краснову.
*) Добавление: директива worker_cpu_affinity теперь поддерживает более
64 процессоров.
*) Исправление: совместимость со сторонними модулями на C++; ошибка
появилась в 1.9.11.
Спасибо Piotr Sikora.
*) Исправление: nginx не собирался статически с OpenSSL на Linux; ошибка
появилась в 1.9.11.
*) Исправление: директива "add_header ... always" с пустым значением не
удаляла из заголовков ошибочных ответов строки Last-Modified и ETag.
*) Изменение: при использовании OpenSSL 1.0.2f в логах могли появляться
сообщения "called a function you should not call" и "shutdown while
in init".
*) Исправление: ошибочные заголовки могли логгироваться некорректно.
*) Исправление: утечки сокетов при использовании HTTP/2.