{"id":452952,"date":"2025-03-23T15:24:03","date_gmt":"2025-03-23T15:24:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=452952"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=452952","title":{"rendered":"<span>\u0421\u0442\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u00abautoindex\u00bb \u0432 Angie\/nginx \u0431\u0435\u0437 sms \u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u0410\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441<\/em><\/strong><em>\u00a0\u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u0440\u0438\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u0432\u00a0\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432.<\/em><\/p>\n<p>\u041f\u043e\u0432\u043e\u0434\u043e\u043c \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u0437\u00a0\u043d\u0430\u0448\u0435\u0433\u043e <a href=\"https:\/\/t.me\/angie_support\" rel=\"noopener noreferrer nofollow\">Telegram\u2011\u0447\u0430\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438<\/a> (\u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c\u00a0\u2014 \u043e\u043d \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0445!): \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 Angie <\/a>\u0441\u0440\u0435\u0434\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/oss_packages\/#install-dynamicmodules-oss\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 <\/a>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Nginx Fancy Index?\u00bb.<\/p>\n<p>\u041c\u0435\u043d\u044f \u0443\u0434\u0438\u0432\u0438\u043b\u043e, \u0447\u0442\u043e\u00a0\u043a\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0449\u0451 \u0432 2014\u00a0\u0433\u043e\u0434\u0443 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u043e\u00a0\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0nginx \u043c\u043e\u0434\u0443\u043b\u044c \u00abautoindex\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 <a href=\"https:\/\/hg.nginx.org\/nginx\/rev\/33c08d7e2915\" rel=\"noopener noreferrer nofollow\">JSON<\/a> \u0438 <a href=\"https:\/\/hg.nginx.org\/nginx\/rev\/99751fe3bc3b\" rel=\"noopener noreferrer nofollow\">XML<\/a>, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432\u00a0\u0432\u043e\u043f\u0440\u043e\u0441\u0435,\u00a0\u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0432\u0435\u0434\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u0430\u0441\u043a\u0435\u0442\u0438\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0440\u0430\u0437\u0443\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c. \u0410\u00a0\u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0437\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043d\u0430\u00a0\u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445.<\/p>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u00a0<a href=\"https:\/\/angie.software\/angie\/docs\/\" rel=\"noopener noreferrer nofollow\">Angie<\/a>, \u043d\u043e\u00a0\u0432\u0441\u0435 \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0438 \u043a\u00a0nginx, \u0445\u043e\u0442\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0432\u043c\u0435\u0441\u0442\u043e Angie\u00a0\u2014 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u0434\u043d\u043e.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/oss_changes\/#angie-1-1-0\" rel=\"noopener noreferrer nofollow\">Angie \u0432\u0435\u0440\u0441\u0438\u0438 1.1.0<\/a> \u043c\u043e\u0434\u0443\u043b\u044c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/\" rel=\"noopener noreferrer nofollow\">autoindex<\/a>\u00a0\u0431\u044b\u043b \u0435\u0449\u0451 <a href=\"https:\/\/hg.angie.software\/angie\/rev\/76e89dbe9524\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d<\/a> \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 &#171;\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e&#187; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0442\u0430\u0440\u0431\u043e\u043b\u043e\u0432 \u043d\u0430\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u043e\u0433\u043e nginx:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9e3\/eb3\/dff\/9e3eb3dff3c188157fb4ec424a2336e0.png\" alt=\"\u041a\u0440\u0438\u0432\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 nginx \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 https:\/\/nginx.org\/download\/\" title=\"\u041a\u0440\u0438\u0432\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 nginx \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 https:\/\/nginx.org\/download\/\" width=\"648\" height=\"487\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9e3\/eb3\/dff\/9e3eb3dff3c188157fb4ec424a2336e0.png\"\/><\/p>\n<div><figcaption>\u041a\u0440\u0438\u0432\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 nginx \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 https:\/\/nginx.org\/download\/<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 nginx-0.1.1.tar.gz \u0438\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 nginx-0.1.10.tar.gz \u0438 \u0442\u0430\u043a \u0434\u043e\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 nginx-0.1.19.tar.gz, \u0433\u0434\u0435 \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u043a\u0440\u0430\u043f\u043b\u0435\u043d\u0438\u0435 nginx-0.1.2.tar.gz\u2026 \u0438\u00a0\u0442.\u00a0\u0434.; \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 &#171;\u0442\u0443\u043f\u043e\u0435&#187; \u043f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e strcmp().<\/p>\n<p>\u0410\u00a0\u0432\u043e\u0442 \u043a\u0430\u043a\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u043e\u0439\u00a0\u0436\u0435\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u00a0Angie:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/97a\/685\/879\/97a685879797e0fbc8777131e012d0d9.png\" alt=\"&quot;\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f&quot; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Angie\" title=\"&quot;\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f&quot; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Angie\" width=\"650\" height=\"697\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97a\/685\/879\/97a685879797e0fbc8777131e012d0d9.png\"\/><\/p>\n<div><figcaption>&#171;\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f&#187; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Angie<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0434\u043b\u044f\u00a0\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0447\u043a\u0443 \u043f\u0443\u0441\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u042f\u00a0\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043d\u0430 <a href=\"https:\/\/download.angie.software\/files\/\" rel=\"noopener noreferrer nofollow\">\u0436\u0438\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a>, \u043d\u043e\u00a0\u043c\u044b \u0434\u043e\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0434\u043e\u00a0\u0434\u0432\u0443\u0445\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438!). \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432 Angie \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445.<\/p>\n<h2>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e\u00a0\u0432\u0441\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0432\u00a0\u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0435\u0449\u0451 \u0432\u00a0nginx, \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0438\u0445 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b.<\/p>\n<h3>1. sub- \u0438 addition-\u0444\u0438\u043b\u044c\u0442\u0440\u044b<\/h3>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_sub\/#sub-filter\" rel=\"noopener noreferrer nofollow\"><code>sub_filter<\/code><\/a>) \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u043a\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 HTML\u2011\u0432\u044b\u0432\u043e\u0434\u0443 \u0441\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f CSS\u2011\u0441\u0442\u0438\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, JS\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0430\u00a0\u043f\u0440\u0438\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430\u2011\u0442\u043e \u044d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0448\u0438\u043c \u0431\u0435\u0437\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 autoindex, \u043d\u043e\u00a0\u043d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u043d\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c. \u0422\u0443\u0442 \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e.<\/p>\n<h3>2. &#171;Fancy Index&#187; \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p>\u0421\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0432\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0442\u043e, \u043a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0439 HTML: \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0438\u043b\u0438, \u043c\u0435\u043d\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0438\u00a0\u0442.\u00a0\u043f.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0418 \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435 nginx \u0435\u0433\u043e \u043d\u0435\u0442; \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u043e\u0434\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<p>\u0410\u00a0\u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043e \u0441\u0432\u0435\u0436\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043a\u043e\u043c\u0443, \u0432\u0435\u0434\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442) \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 ngx_fancyindex\u00a0\u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440, \u043f\u043e\u0445\u043e\u0436\u0435, \u0437\u0430\u0431\u0440\u043e\u0441\u0438\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u00a0\u0441\u0432\u043e\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431, \u0432\u00a0\u043e\u0431\u0449\u0435\u043c\u2011\u0442\u043e, \u043d\u0435\u0434\u0430\u043b\u0435\u043a\u043e \u0443\u0448\u0435\u043b \u043e\u0442\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430.<\/p>\n<h3>3. XML + XSLT<\/h3>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format xml;<\/code><\/a> \u0438 \u0440\u043e\u0434\u043d\u043e\u0439 autoindex \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML. \u042d\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0430\u043b\u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u0443\u044e\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438\u00a0\u0434\u0430\u0436\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_xslt\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e XSLT\u2011\u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/a>:<\/p>\n<pre><code class=\"nginx\">location \/ { \u00a0\u00a0\u00a0\u00a0autoindex on; \u00a0\u00a0\u00a0\u00a0autoindex_format xml;  \u00a0\u00a0\u00a0\u00a0xslt_stylesheet \/path\/to\/template.xslt; }<\/code><\/pre>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d\u044b XSLT\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0XML. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0430\u00a0\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u0443\u044e HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443 \u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435. \u041d\u0430\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u00a0\u0442\u0430\u043a\u0438\u0445 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0418\u0437\u00a0\u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f XSLT\u2011\u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442\u00a0libxml2\/libxslt.<\/p>\n<p>\u0410\u00a0\u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 HTML \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043b\u044e\u0431\u043e\u0433\u043e\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0438\u0434\u0430, \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0430\u00a0\u043f\u043e\u0442\u043e\u043c\u0443 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c JavaScript.<\/p>\n<p>\u0418 \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u00a0HTML. \u041c\u043e\u0436\u043d\u043e \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 CSV, \u0438\u043b\u0438\u00a0\u0434\u0430\u0436\u0435 \u0432\u044b\u0432\u0435\u0441\u0442\u0438\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e ASCII\u2011\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0435 curl\u2011\u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0438\u0437\u00a0\u043a\u043e\u043d\u0441\u043e\u043b\u0438\u00a0\u2014 \u0432\u0435\u0434\u044c \u0432\u00a0\u0432\u0430\u0448\u0438\u0445 \u0440\u0443\u043a\u0430\u0445 \u0432\u0441\u044f \u043c\u043e\u0449\u044c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h3>4. JSON(P) + JavaScript<\/h3>\n<p>\u041a\u0430\u043a\u00a0\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u043e\u00a0\u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format json;<\/code><\/a>,\u00a0\u043b\u0438\u0431\u043e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format jsonp;<\/code><\/a> \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 JSON \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u0442\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u00a0\u0435\u0433\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_js\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e JS\u2011\u043c\u043e\u0434\u0443\u043b\u044f<\/a> \u0441\u00a0JSON \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u043e\u00a0\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u043c \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442.\u00a0\u0435. \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/\" rel=\"noopener noreferrer nofollow\">addition\u2011\u0444\u0438\u043b\u044c\u0442\u0440<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_ssi\/\" rel=\"noopener noreferrer nofollow\">\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e SSI<\/a>, \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0JSON \u0438 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043d\u0435\u043a\u0438\u0439 HTML\u2011\u0448\u0430\u0431\u043b\u043e\u043d \u0441\u00a0JavaScript\u2011\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0434\u043b\u044f\u00a0\u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0410\u00a0\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u0434\u0430\u0447\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u00a0JS\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 JSON, \u0438 \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0418\u0437\u00a0\u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c\u00a0\u2014 \u0440\u0430\u0437\u0432\u0435 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 JavaScript \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u0438\u043b\u0438\u00a0\u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435\u00a0\u0436\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u0436\u0438\u043c\u0430\u044e\u0442\u0441\u044f. \u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u00a0\u0445\u043e\u0434\u0435 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d.<\/p>\n<p>\u0415\u0441\u043b\u0438\u00a0\u0436\u0435 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0449\u0451 \u0438 WebDAV, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043d\u043e\u00a0\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u00a0\u043d\u0438\u043c\u0438.<\/p>\n<h2>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0410\u00a0\u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0GitHub.<\/p>\n<p>\u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u00a0deb\u2011\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435. \u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/oss_packages\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043b\u044f\u00a0\u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c<\/a>, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0438 \u0448\u0430\u0433\u0438 \u043d\u0430\u00a0\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. \u0410\u00a0\u0434\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u00a0nginx \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/migration\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/a>.<\/p>\n<p>\u0423\u00a0\u0441\u0435\u0431\u044f \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (<code>\/etc\/angie\/angie.conf<\/code>):<\/p>\n<pre><code class=\"nginx\">events {}  http {     server {         listen  80; \u00a0\u00a0\u00a0\u00a0           location \/angie\/ {         \u00a0\u00a0\u00a0\u00a0root \/srv\/www\/public;      \u00a0 \u00a0     autoindex  on;         }     } }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0441 \u043d\u0435\u0439 Angie:<\/p>\n<p><code># service angie start<\/code><\/p>\n<p>\u0418 \u043e\u0442\u043a\u0440\u044b\u0432 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/example.org\/angie\/<\/code>, \u044f \u043c\u043e\u0433\u0443 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d70\/537\/bc3\/d70537bc3aca9dc8a60470948127a48e.png\" alt=\"http:\/\/example.org\/angie\/\" title=\"http:\/\/example.org\/angie\/\" width=\"719\" height=\"338\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d70\/537\/bc3\/d70537bc3aca9dc8a60470948127a48e.png\"\/><\/p>\n<div><figcaption>http:\/\/example.org\/angie\/<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0434\u043b\u044f\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432,\u00a0\u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f <code>\/srv\/www\/public\/angie\/<\/code> \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Angie.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 XSLT-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f XML<\/h3>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 XML, \u0434\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0448 <code>location<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <code>autoindex_format xml<\/code>: <\/p>\n<pre><code class=\"nginx\">location \/angie\/ {     root \/srv\/www\/public;      autoindex  on;     autoindex_format  xml; }<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0442\u0432\u0435\u0442:<\/p>\n<pre><code class=\"bash\">$ curl https:\/\/example.org\/angie\/ &lt;?xml version=\"1.0\"?&gt; &lt;list&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;auto&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;conf&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;contrib&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;html&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;man&lt;\/directory&gt; &lt;directory mtime=\"2025-02-13T11:02:48Z\"&gt;src&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;tests&lt;\/directory&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"22662\"&gt;CHANGES&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"36858\"&gt;CHANGES.ru&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"1358\"&gt;LICENSE&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"570\"&gt;README&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"2422\"&gt;configure&lt;\/file&gt; &lt;\/list&gt;<\/code><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u0432\u0438\u0434\u0438\u043c, \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 XML\u2011\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;list&gt;<\/code>. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;directory&gt;<\/code>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;file&gt;<\/code>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;other&gt;<\/code> \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, unix\u2011\u0441\u043e\u043a\u0435\u0442). \u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0423\u00a0\u043d\u0438\u0445 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>mtime<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 ISO 8601, \u0430\u00a0\u0443\u00a0\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <code>&lt;file&gt;<\/code> \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>size<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u00a0\u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 xslt\u2011\u043c\u043e\u0434\u0443\u043b\u044c:<\/p>\n<pre><code># apt install angie-module-xslt ... Unpacking angie-module-xslt (1.8.2-1~noble) ... Setting up angie-module-xslt (1.8.2-1~noble) ... ----------------------------------------------------------------------  The XSLT dynamic module for Angie has been installed. To enable this module, add the following to \/etc\/angie\/angie.conf and reload angie:  load_module modules\/ngx_http_xslt_filter_module.so;  Please refer to the modules documentation for further details: https:\/\/en.angie.software\/angie\/docs\/configuration\/modules\/http\/http_xslt\/<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0432\u043e\u00a0\u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0430\u043c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f\u00a0\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0422\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c: \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"nginx\">events {}  load_module  modules\/ngx_http_xslt_filter_module.so;  http {     ... }<\/code><\/pre>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u044b, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>EvilVir\/Nginx-Autoindex<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/EvilVir\/Nginx-Autoindex\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/EvilVir\/Nginx-Autoindex<\/a> <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d <code>autoindex.xslt<\/code>: <\/p>\n<p><code>$ cd \/srv\/www<\/code><br \/><code>$ wget https:\/\/raw.githubusercontent.com\/EvilVir\/Nginx-Autoindex\/refs\/heads\/master\/autoindex.xslt<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#location\" rel=\"noopener noreferrer nofollow\"><code>location<\/code><\/a> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_xslt\/#xslt-stylesheet\" rel=\"noopener noreferrer nofollow\"><code>xslt_stylesheet<\/code><\/a> \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public;       autoindex  on;      autoindex_format  xml;       xslt_stylesheet \/srv\/www\/autoindex.xslt; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0443\u00a0\u043c\u0435\u043d\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#root\" rel=\"noopener noreferrer nofollow\"><code>root<\/code><\/a>.<\/p>\n<p>\u041d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u00a0\u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server      Loaded: loaded (\/usr\/lib\/systemd\/system\/angie.service; enabled; preset: enabled)      Active: active (running) since Thu 2025-03-13 09:53:51 MSK; 5min ago        Docs: https:\/\/en.angie.software\/angie\/docs\/     Process: 1107393 ExecStart=\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf (code=exited, status=0\/SUCCESS)     Process: 1108004 ExecReload=\/bin\/sh -c \/bin\/kill -s HUP $(\/bin\/cat \/run\/angie.pid) (code=exited, status=0\/SUCCESS)    Main PID: 1107395 (angie)       Tasks: 6 (limit: 4451)      Memory: 144.1M (peak: 230.1M)         CPU: 2.414s      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #3 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001107695 \"angie: worker process is shutting down #2\"              \u251c\u25001108008 \"angie: worker process #3\"              \u251c\u25001108009 \"angie: worker process #3\"              \u251c\u25001108010 \"angie: worker process #3\"              \u2514\u25001108011 \"angie: worker process #3\"  ...<\/code><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u0432\u0438\u0434\u043d\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441 <strong>#2<\/strong>\u00a0\u043d\u0430 <strong>#3<\/strong>\u00a0(\u0442. \u043a. \u044d\u0442\u043e\u00a0\u0431\u044b\u043b \u0443\u0436\u0435 2-\u0439 <code>reload<\/code>), \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0438\u0437\u00a0\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043e\u0442\u00a0nginx \u043f\u043e\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f: \u0443\u00a0Angie \u0432\u00a0\u0438\u043c\u0435\u043d\u0430\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430\u00a0\u0432\u00a0\u0438\u043c\u0435\u043d\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/runtime\/#runtime-cli-options\" rel=\"noopener noreferrer nofollow\">\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434<\/a> <code>angie -m<\/code> \u0438 <code>angie -M<\/code>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u00a0\u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0438\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u043b\u043e\u0433 \u043e\u0448\u0438\u0431\u043e\u043a<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u041d\u043e\u00a0\u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e: \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c <code>http:\/\/example.org\/angie\/<\/code> \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/626\/474\/3b9\/6264743b9b763df6002c72df26f5a641.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EvilVir\/Nginx-Autoindex\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EvilVir\/Nginx-Autoindex\" width=\"988\" height=\"661\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/626\/474\/3b9\/6264743b9b763df6002c72df26f5a641.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EvilVir\/Nginx-Autoindex<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043e\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u043b\u044e\u0431\u0438\u0442 \u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0435\u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u044b\u0435 \u0442\u043e\u043d\u0430. \u0418\u0437\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432 \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c &#171;\u0445\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&#187;, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u043d\u0438\u0437:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ca\/4fc\/42a\/1ca4fc42a4a3f35d1c913d313948b068.png\" alt=\"&quot;\u0425\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&quot; \u0432 EvilVir\/Nginx-Autoindex\" title=\"&quot;\u0425\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&quot; \u0432 EvilVir\/Nginx-Autoindex\" width=\"460\" height=\"102\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ca\/4fc\/42a\/1ca4fc42a4a3f35d1c913d313948b068.png\"\/><\/p>\n<div><figcaption>&#171;\u0425\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&#187; \u0432 EvilVir\/Nginx-Autoindex<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_dav\/\" rel=\"noopener noreferrer nofollow\">\u0447\u0435\u0440\u0435\u0437 WebDAV<\/a>. \u0422\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  xml;       xslt_stylesheet \/srv\/www\/autoindex.xslt;            dav_methods  PUT;      client_max_body_size  10M; }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_dav\/#dav-methods\" rel=\"noopener noreferrer nofollow\">WebDAV\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/a> \u043d\u0430\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <code>PUT<\/code>, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#client-max-body-size\" rel=\"noopener noreferrer nofollow\"><code>client_max_body_size<\/code><\/a> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043e 10\u00a0\u041c\u0431, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0447\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u043e \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (1\u00a0\u041c\u0431).<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u00a0\u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0417\u0434\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0443.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p><code>$ cd \/srv\/www\/public\/anige\/<\/code><br \/><code>$ mkdir upload<\/code><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043c\u043e\u0433\u043b\u0438 \u0432\u00a0\u043d\u0435\u0451 \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u0443, \u043e\u0442\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442:<\/p>\n<p><code># chown angie:angie upload<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u00a0\u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u043e\u0432\u0430 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f:<\/p>\n<pre><code># service angie reload # service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #4 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001108008 \"angie: worker process is shutting down #3\"              \u251c\u25001108011 \"angie: worker process is shutting down #3\"              \u251c\u25001108244 \"angie: worker process #4\"              \u251c\u25001108245 \"angie: worker process #4\"              \u251c\u25001108246 \"angie: worker process #4\"              \u2514\u25001108247 \"angie: worker process #4\"  ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u0431\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u0432 \u043b\u043e\u0433\u0435<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0420\u0430\u0434\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430\u0448\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>upload<\/code> (<code>http:\/\/example.org\/angie\/upload\/<\/code>) \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439 \u0442\u0443\u0434\u0430 \u0442\u0430\u0440\u0431\u043e\u043b \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 Angie:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab0\/6d3\/f11\/ab06d3f11c56d2a7f2bd48ef99d98a58.gif\" alt=\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 EvilVir\/Nginx-Autoindex\" title=\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 EvilVir\/Nginx-Autoindex\" width=\"800\" height=\"518\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab0\/6d3\/f11\/ab06d3f11c56d2a7f2bd48ef99d98a58.gif\"\/><\/p>\n<div><figcaption>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 EvilVir\/Nginx-Autoindex<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u0418 \u0434\u0430\u0436\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0412\u0441\u0451\u00a0\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e\u00a0\u0444\u0430\u0439\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u00a0\u0431\u044b\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435:<\/p>\n<pre><code>$ ls -l upload total 1640 -rw------- 1 angie angie 1677058 Mar  9 23:12 angie-1.8.2.tar.gz<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0442\u0435\u043c\u044b \u0434\u0430\u0435\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0432\u00a0\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 <a href=\"https:\/\/github.com\/EvilVir\/Nginx-Autoindex?tab=readme-ov-file#advanced-configuration-you-can-stop-with-config-above-if-you-want\" rel=\"noopener noreferrer nofollow\">\u0441\u00a0\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439<\/a>.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443\u00a0\u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u043a: <a href=\"https:\/\/github.com\/ViRb3\/serve-zip\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/ViRb3\/serve-zip<\/a>. \u041e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u043b\u044f\u00a0\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432\u00a0\u0432\u0438\u0434\u0435 \u043e\u0434\u043d\u043e\u0433\u043e ZIP\u2011\u0430\u0440\u0445\u0438\u0432\u0430 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 HTTP\u2011\u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430\u00a0Go:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/626\/130\/8df\/6261308df1d85376e68e801f59db2d91.png\" alt=\"\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0432 ViRb3\/serve\u2011zip\" title=\"\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0432 ViRb3\/serve\u2011zip\" width=\"375\" height=\"114\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/626\/130\/8df\/6261308df1d85376e68e801f59db2d91.png\"\/><\/p>\n<div><figcaption>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0432 ViRb3\/serve\u2011zip<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435\u043c\u0443 \u0432\u0436\u0438\u0432\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0442\u0443\u0442: <a href=\"https:\/\/download.angie.software\/\" rel=\"noopener noreferrer nofollow\">https:\/\/download.angie.software\/<\/a><\/p>\n<p>\u0410 \u043c\u044b \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f.<\/p>\n<h4>gibatronic\/ngx-superbindex<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/gibatronic\/ngx-superbindex\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/gibatronic\/ngx-superbindex<\/a><\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0432\u0441\u0451 \u0442\u043e\u0442\u00a0\u0436\u0435, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d <code>superbindex.xslt<\/code>:<\/p>\n<p><code>$ cd \/srv\/www<\/code><br \/><code>$\u00a0wget https:\/\/github.com\/gibatronic\/ngx-superbindex\/releases\/download\/v2.0.1\/superbindex.xslt<\/code><\/p>\n<p>\u0418 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"nginx\">location \/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  xml;       xslt_stylesheet \/srv\/www\/superbindex.xslt; }<\/code><\/pre>\n<p>\u041e\u043f\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #5 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001108247 \"angie: worker process is shutting down #4\"              \u251c\u25001109361 \"angie: worker process #5\"              \u251c\u25001109362 \"angie: worker process #5\"              \u251c\u25001109363 \"angie: worker process #5\"              \u2514\u25001109364 \"angie: worker process #5\"  ...<\/code><\/pre>\n<p>\u0412\u00a0\u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u0432\u00a0\u043b\u043e\u0433\u0435<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0423\u00a0\u043d\u0430\u0441 \u0432\u0441\u0435 \u0432\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <code>http:\/\/example.org\/angie\/<\/code> \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"bordered\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ab\/224\/caa\/1ab224caabd9f413bb0b88ca74e0b57b.gif\" alt=\"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 gibatronic\/ngx-superbindex\" title=\"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 gibatronic\/ngx-superbindex\" width=\"446\" height=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ab\/224\/caa\/1ab224caabd9f413bb0b88ca74e0b57b.gif\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 gibatronic\/ngx-superbindex<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0441\u00a0\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043c\u0435\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u043b\u0438\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043d\u0430\u00a0\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p>\u0418\u0437\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043f\u0430\u043b\u0438\u0442\u0440\u044b, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0432\u0435\u0442\u043b\u043e\u0439 \u0438 \u0442\u0435\u043c\u043d\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f.<\/p>\n<h4>jbox-web\/nginx-index-template<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/jbox-web\/nginx-index-template\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/jbox-web\/nginx-index-template<\/a><\/p>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d <code>nginx_template.xslt<\/code>:<\/p>\n<p><code>$ cd \/srv\/www<\/code><br \/><code>$ wget https:\/\/raw.githubusercontent.com\/jbox-web\/nginx-index-template\/refs\/heads\/master\/nginx_template.xslt<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445:<\/p>\n<pre><code class=\"nginx\">location \/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  xml;       xslt_stylesheet \/srv\/www\/nginx_template.xslt  path='$uri'; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 URI.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0435:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #6 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001109362 \"angie: worker process is shutting down #5\"              \u251c\u25001110286 \"angie: worker process #6\"              \u251c\u25001110287 \"angie: worker process #6\"              \u251c\u25001110288 \"angie: worker process #6\"              \u2514\u25001110289 \"angie: worker process #6\"  ...<\/code><\/pre>\n<p>\u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u043b\u043e\u0433<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0427\u0442\u043e\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 <code>http:\/\/example.org\/angie\/<\/code>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f7\/4c5\/8e3\/9f74c58e334553a3466088fa344f4e6e.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 jbox-web\/nginx-index-template\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 jbox-web\/nginx-index-template\" width=\"1186\" height=\"873\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f7\/4c5\/8e3\/9f74c58e334553a3466088fa344f4e6e.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 jbox-web\/nginx-index-template<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u00abDebian Repository\u00bb\u00a0\u2014 \u0432\u0438\u0434\u0438\u043c\u043e, \u0430\u0432\u0442\u043e\u0440 \u0442\u0435\u043c\u044b \u0434\u0435\u043b\u0430\u043b \u0435\u0451 \u043f\u043e\u0434\u00a0\u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u041d\u043e\u00a0\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435:<\/p>\n<p><code># grep \"Debian Repository\" nginx_template.xslt     &lt;title&gt;Debian Repository&lt;\/title&gt;       &lt;h1 class=\"mt-5\"&gt;Debian Repository&lt;\/h1&gt;         &lt;span class=\"text-muted\"&gt;Debian Repository&lt;\/span&gt;<\/code><\/p>\n<p>\u042d\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u0430\u044f \u0442\u0435\u043c\u0430, \u043d\u043e\u00a0\u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c &#171;\u0445\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&#187;.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e.<\/p>\n<h4>Airkro\/nginx-simple-index<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/Airkro\/nginx-simple-index\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Airkro\/nginx-simple-index<\/a><\/p>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d <code>template.xslt<\/code>:<\/p>\n<p><code>$ cd \/srv\/www<\/code><br \/><code>$ wget https:\/\/raw.githubusercontent.com\/Airkro\/nginx-simple-index\/refs\/heads\/master\/template.xslt<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445:<\/p>\n<pre><code class=\"nginx\">location \/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  xml;       xslt_stylesheet \/srv\/www\/nginx_template.xslt  path='$uri'; }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u00a0\u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #7 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001110929 \"angie: worker process #7\"              \u251c\u25001110930 \"angie: worker process #7\"              \u251c\u25001110931 \"angie: worker process #7\"              \u2514\u25001110932 \"angie: worker process #7\"  ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u0432\u00a0\u043b\u043e\u0433\u0435<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 <code>http:\/\/example.org\/angie\/<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3d9\/6a1\/ae8\/3d96a1ae8a8050f690c50b29c06fd5bc.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 Airkro\/nginx-simple-index\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 Airkro\/nginx-simple-index\" width=\"1186\" height=\"873\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d9\/6a1\/ae8\/3d96a1ae8a8050f690c50b29c06fd5bc.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 Airkro\/nginx-simple-index<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0430\u044f \u0442\u0435\u043c\u0430, \u043d\u043e\u00a0\u0435\u0441\u0442\u044c &#171;\u0445\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438&#187; \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u0418\u0437\u00a0\u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <code>lang='zh-cn'<\/code> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430\u00a0\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u043c. \u041f\u0440\u0438\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0442\u0435\u043c\u00a0\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0430\u00a0\u0440\u0443\u0441\u0441\u043a\u0438\u0439; \u0432\u043e\u0442 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u00a0\u0448\u0430\u0431\u043b\u043e\u043d\u0435:<\/p>\n<pre><code class=\"xml\"> &lt;i18n:zh-cn folders=\" \u4e2a\u76ee\u5f55\uff0c\" files=\" \u4e2a\u6587\u4ef6\" timing=\"\u6700\u8fd1\u4fee\u6539\u65f6\u95f4\" filename=\"\u6587\u4ef6\u540d\" size=\"\u5927\u5c0f\" root=\"\u6839\u76ee\u5f55\"   \/&gt;   &lt;i18n:en-us folders=\" folders, \" files=\" files\" timing=\"Last modified\" filename=\"File name\" size=\"Size\" root=\"root\"   \/&gt;<\/code><\/pre>\n<p>\u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b:<\/p>\n<pre><code class=\"xml\">  &lt;i18n:ru-ru folders=\" \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438(\u044f\/\u0439), \" files=\" \u0444\u0430\u0439\u043b(\u043e\u0432)\" timing=\"\u0414\u0430\u0442\u0430\" filename=\"\u0418\u043c\u044f\" size=\"\u0420\u0430\u0437\u043c\u0435\u0440\" root=\"\u2302\"   \/&gt;<\/code><\/pre>\n<p>\u0418 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445:<\/p>\n<p><code>xslt_stylesheet \/srv\/www\/nginx_template.xslt path='$uri' lang='ru-ru';<\/code><\/p>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d02\/d66\/b23\/d02d66b2325c5bc0d0619d274c025759.png\" alt=\"\u0420\u0443\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b Airkro\/nginx-simple-index\" title=\"\u0420\u0443\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b Airkro\/nginx-simple-index\" width=\"1186\" height=\"873\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d02\/d66\/b23\/d02d66b2325c5bc0d0619d274c025759.png\"\/><\/p>\n<div><figcaption>\u0420\u0443\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b Airkro\/nginx-simple-index<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044f\u0437\u044b\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u043b\u043e\u043a\u0430\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u043a\u043e\u0439 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_map\/\" rel=\"noopener noreferrer nofollow\"><code>map<\/code><\/a>:<\/p>\n<pre><code class=\"nginx\">map $http_accept_language $autoindex_lang {     ~ru      ru-ru;     ~zh      zh-cn;     default  en-us; }<\/code><\/pre>\n<p>\u0418 \u0432\u00a0\u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u0437\u00a0\u043d\u0435\u0433\u043e:<\/p>\n<p><code>xslt_stylesheet \/srv\/www\/template.xslt path='$uri' lang='$autoindex_lang';<\/code><\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a <code>Accept-Language<\/code>, \u043d\u043e\u00a0\u0432\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_js\/#js-set\" rel=\"noopener noreferrer nofollow\"><code>js_set<\/code><\/a>.<\/p>\n<p>\u0414\u0430\u00a0\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u043d\u0443\u0436\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u00bb \u0438\u043b\u0438 \u00ab\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439\u00bb \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0438\u0445 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>\u0410\u00a0\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e\u00a0\u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c JSON \u0441\u00a0\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u043c \u043d\u0430\u00a0JavaScript.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 JSON<\/h3>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434 JSON, \u0434\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u0432\u00a0location \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format json<\/code><\/a>:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public;       autoindex  on;      autoindex_format  json; }<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u00a0\u043e\u0442\u0432\u0435\u0442:<\/p>\n<pre><code class=\"json\">$ curl https:\/\/example.org\/angie\/ [ { \"name\":\"auto\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"conf\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"contrib\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"html\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"man\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"src\", \"type\":\"directory\", \"mtime\":\"Thu, 13 Feb 2025 11:02:48 GMT\" }, { \"name\":\"tests\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"CHANGES\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":22662 }, { \"name\":\"CHANGES.ru\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":36858 }, { \"name\":\"LICENSE\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":1358 }, { \"name\":\"README\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":570 }, { \"name\":\"configure\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":2422 } ]<\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 JSON \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><code>name<\/code>\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0438\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435;<\/p>\n<\/li>\n<li>\n<p><code>type<\/code>\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0442\u0438\u043f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p><code>file<\/code> \u0443\u00a0\u0444\u0430\u0439\u043b\u043e\u0432,<\/p>\n<\/li>\n<li>\n<p><code>directory<\/code> \u0443\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439,<\/p>\n<\/li>\n<li>\n<p><code>other<\/code> \u0443\u00a0\u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, unix\u2011\u0441\u043e\u043a\u0435\u0442);<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>mtime<\/code>\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0HTTP\u2011\u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 JavaScript\u2011\u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>Date()<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>size<\/code> (\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u00a0\u0444\u0430\u0439\u043b\u043e\u0432)\u00a0\u2014 \u0447\u0438\u0441\u043b\u043e, \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u00a0\u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u0410\u00a0\u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430\u00a0\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format jsonp<\/code><\/a>:<\/p>\n<pre><code class=\"javascript\">$ curl https:\/\/example.org\/angie\/?callback=my_func \/* callback *\/ my_func([ { \"name\":\"auto\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"conf\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"contrib\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"html\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"man\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"src\", \"type\":\"directory\", \"mtime\":\"Thu, 13 Feb 2025 11:02:48 GMT\" }, { \"name\":\"tests\", \"type\":\"directory\", \"mtime\":\"Sun, 09 Mar 2025 18:59:03 GMT\" }, { \"name\":\"CHANGES\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":22662 }, { \"name\":\"CHANGES.ru\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":36858 }, { \"name\":\"LICENSE\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":1358 }, { \"name\":\"README\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":570 }, { \"name\":\"configure\", \"type\":\"file\", \"mtime\":\"Thu, 13 Feb 2025 04:40:13 GMT\", \"size\":2422 } ]);<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043b <code>?callback=my_func<\/code>.<\/p>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>callback=<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u00a0\u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0435\u0440\u043d\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 JSON. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u00a0HTML\u2011\u0442\u0435\u0433 <code>&lt;script&gt;<\/code>:<\/p>\n<p> <code>&lt;script src=\"https:\/\/example.org\/angie\/?callback=my_func\"&gt;&lt;\/script&gt;<\/code><\/p>\n<p>\u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 <code>Content-Type<\/code> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>application\/javascript<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>application\/json<\/code>. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>my_func()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0437\u043e\u0432\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u0434\u043e\u043b\u0436\u043d\u0430\u00a0\u0431\u044b\u0442\u044c \u0433\u0434\u0435\u2011\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0441\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c, \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0440\u043d\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 JSON. \u0412\u00a0\u043d\u0430\u0448\u0438\u0445 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 jsonp \u043d\u0430\u043c \u043d\u0435\u00a0\u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u0443\u044e \u0442\u0435\u043c\u0443 \u043d\u0430\u00a0\u0431\u0430\u0437\u0435 JavaScript \u0438 JSON.<\/p>\n<h4>EthraZa\/NGINdeX.io<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/EthraZa\/NGINdeX.io\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/EthraZa\/NGINdeX.io<\/a><\/p>\n<p>\u042d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0432\u043d\u0443\u0442\u0440\u044c HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0432\u00a0\u0441\u0435\u0431\u0435 JavaScript\u2011\u043a\u043e\u0434 \u0438 CSS\u2011\u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f\u00a0\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c <code>addition<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043b\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, HTML \u043a\u043e\u0434 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430\u00a0\u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u044e\u0442 JSON \u0438\u0437\u00a0<a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044f <code>autoindex<\/code><\/a>.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 <code>\/srv\/www\/public\/<\/code> \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u0434\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>autoindex<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043c\u0443\u0441\u043e\u0440\u0438\u0442\u044c:<\/p>\n<p><code>$ cd \/srv\/www\/public\/<\/code><br \/><code>$ mkdir autoindex<\/code><\/p>\n<p>\u0418 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0432\u00a0\u043d\u0435\u0451 \u0434\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438, <a href=\"https:\/\/github.com\/EthraZa\/NGINdeX.io\/blob\/main\/header.html\" rel=\"noopener noreferrer nofollow\"><code>header.html<\/code><\/a> \u0438 <a href=\"https:\/\/github.com\/EthraZa\/NGINdeX.io\/blob\/main\/footer.html\" rel=\"noopener noreferrer nofollow\"><code>footer.html<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0445\u0432\u043e\u0441\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e:<\/p>\n<p><code>$ cd autoindex<\/code><br \/><code>$ wget https:\/\/raw.githubusercontent.com\/EthraZa\/NGINdeX.io\/refs\/heads\/main\/header.html<\/code><br \/><code>$ wget https:\/\/raw.githubusercontent.com\/EthraZa\/NGINdeX.io\/refs\/heads\/main\/footer.html<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043d\u0435\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public\/;       autoindex  on;       autoindex_format  json;      addition_types  application\/json;        add_before_body \/autoindex\/header.html;      add_after_body \/autoindex\/footer.html;       add_header Content-Type text\/html; }  location \/autoindex\/ {      internal;      root \/srv\/www\/public; }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/#addition-types\" rel=\"noopener noreferrer nofollow\"><code>addition_types<\/code><\/a>, \u0447\u0442\u043e\u00a0<a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c <code>addition<\/code><\/a> \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u00a0\u043e\u0442\u0432\u0435\u0442 \u0441\u00a0\u0442\u0438\u043f\u043e\u043c <code>application\/json<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044f <code>autoindex<\/code><\/a>, \u043a\u043e\u0433\u0434\u0430 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format<\/code><\/a> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0430\u0432\u043d\u044b\u043c <code>json<\/code>.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/#add-before-body\" rel=\"noopener noreferrer nofollow\"><code>add_before_body<\/code><\/a> \u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/#add-after-body\" rel=\"noopener noreferrer nofollow\"><code>add_after_body<\/code><\/a> \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 URI \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f\u00a0\u043d\u0430\u0448\u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u00a0\u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p><strong>\u0412\u0430\u0436\u043d\u043e!<\/strong> \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u044d\u0442\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0437\u0430\u0434\u0430\u044e\u0442 \u043d\u0435\u00a0\u043f\u0443\u0442\u044c \u043a\u00a0\u0444\u0430\u0439\u043b\u0443, \u0430\u00a0\u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 Angie\u00a0\u2014 \u044d\u0442\u0438 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#server\" rel=\"noopener noreferrer nofollow\">\u0431\u043b\u043e\u043a\u0430 <code>server<\/code><\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430\u00a0\u043d\u0438\u0445 \u0441\u0442\u0430\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#location\" rel=\"noopener noreferrer nofollow\"><code>location \/autoindex\/<\/code><\/a> \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u00a0\u043d\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#root\" rel=\"noopener noreferrer nofollow\"><code>root<\/code><\/a>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u00a0\u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u044b <code>\/autoindex\/header.html<\/code> \u0438 <code>\/autoindex\/footer.html<\/code> \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0434\u0430\u043d\u044b \u0444\u0430\u0439\u043b\u044b <code>\/srv\/www\/public\/autoindex\/header.html<\/code> \u0438 <code>\/srv\/www\/public\/autoindex\/footer.html<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e (root + URI).<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0444\u0430\u0439\u043b\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0448\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 autoindex \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0438\u0437\u0432\u043d\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#internal\" rel=\"noopener noreferrer nofollow\"><code>internal<\/code><\/a>.<\/p>\n<p>\u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_headers\/#add-header\" rel=\"noopener noreferrer nofollow\"><code>add_header<\/code><\/a> \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 <code>Content-Type<\/code> \u043d\u0430 <code>text\/html<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f HTML \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0448 \u043e\u0442\u0432\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u0443\u044e HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c\u00a0\u043b\u0438 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #11 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001112978 \"angie: worker process is shutting down #10\"              \u251c\u25001114838 \"angie: worker process #11\"              \u251c\u25001114839 \"angie: worker process #11\"              \u251c\u25001114840 \"angie: worker process #11\"              \u2514\u25001114841 \"angie: worker process #11\"  ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435\u00a0\u0442\u0430\u043a, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u00a0\u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u043b\u0438\u00a0\u043c\u044b \u043d\u0435\u00a0\u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043e\u0442\u043a\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u0432\u00a0\u043b\u043e\u0433\u0435<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0410\u00a0\u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u0438 \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043e\u0431\u043d\u043e\u0432\u0438\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 Angie <code>http:\/\/example.org\/angie\/<\/code>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/917\/91e\/6af\/91791e6afea6cb4e44169d993061c7a3.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EthraZa\/NGINdeX.io\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EthraZa\/NGINdeX.io\" width=\"983\" height=\"920\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/917\/91e\/6af\/91791e6afea6cb4e44169d993061c7a3.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 EthraZa\/NGINdeX.io<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0443\u0442 \u043d\u0430\u00a0\u043d\u0430\u0441 \u043e\u0431\u0440\u0443\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0449\u044c JavaScript:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0432\u00a0\u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434 \u0447\u0438\u0441\u043b\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u0432\u043d\u0438\u0437\u0443;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f\u00a0\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430\u00a0\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438\u00a0\u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043b\u044f\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0443\u044e CSS\u2011\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0432\u00a0\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/github.com\/EthraZa\/NGINdeX.io\/blob\/main\/header.html\" rel=\"noopener noreferrer nofollow\"><code>header.html<\/code><\/a>.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0447\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0435.<\/p>\n<h4>ccarney16\/nginx-autoindex<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/ccarney16\/nginx-autoindex\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/ccarney16\/nginx\u2011autoindex<\/a><\/p>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432\u00a0\u0432\u0438\u0434\u0435 ZIP\u2011\u0430\u0440\u0445\u0438\u0432\u0430 (\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 <code>git clone<\/code>):<\/p>\n<p><code>$ cd \/srv\/www\/public<\/code><br \/><code>$ wget https:\/\/github.com\/ccarney16\/nginx-autoindex\/archive\/refs\/heads\/master.zip<\/code><br \/><code>$ unzip master.zip<\/code><\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435\u00a0\u0431\u0443\u0434\u0443 \u0435\u0451 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0449\u0451 \u0440\u0430\u0437:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public\/;       autoindex  on;       autoindex_format  json;      addition_types  application\/json;       add_before_body \/autoindex\/header.html;      add_after_body \/autoindex\/footer.html;       add_header Content-Type text\/html; }  location \/autoindex\/ {      root \/srv\/www\/public\/nginx-autoindex-master\/; }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0440\u0430\u0437\u0431\u043e\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b.<\/p>\n<p>\u041e\u0442\u043c\u0435\u0447\u0443\u00a0\u043b\u0438\u0448\u044c, \u0447\u0442\u043e\u00a0\u0438\u0437 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#location\" rel=\"noopener noreferrer nofollow\"><code>location \/autoindex\/<\/code><\/a>, \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u043c\u0435\u043d\u044b \u043f\u0443\u0442\u0438 \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#root\" rel=\"noopener noreferrer nofollow\"><code>root<\/code><\/a>, \u0442\u0430\u043a\u0436\u0435\u00a0\u0431\u044b\u043b\u0430 \u0443\u0431\u0440\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#internal\" rel=\"noopener noreferrer nofollow\"><code>internal<\/code><\/a>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f CSS\u2011\u0441\u0442\u0438\u043b\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043e\u0442\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c \u0441\u043c\u0435\u043d\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0443\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #12 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001115537 \"angie: worker process #12\"              \u251c\u25001115538 \"angie: worker process #12\"              \u251c\u25001115539 \"angie: worker process #12\"              \u2514\u25001115540 \"angie: worker process #12\"  ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435\u00a0\u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u043b\u0438\u00a0\u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043a\u0430\u043a\u0430\u044f\u2011\u0442\u043e \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u00a0\u043b\u043e\u0433\u0435:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0412\u00a0\u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430, \u0438 \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/example.org\/angie\/<\/code> \u044f \u0432\u0438\u0436\u0443 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c04\/ea1\/703\/c04ea1703e1a30504ae13a5533b0d4a6.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 ccarney16\/nginx-autoindex\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 ccarney16\/nginx-autoindex\" width=\"1044\" height=\"795\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c04\/ea1\/703\/c04ea1703e1a30504ae13a5533b0d4a6.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 ccarney16\/nginx-autoindex<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0441\u043e\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e; \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0442\u0435\u043c\u0430. \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h4>kstep\/nginx-autoindex-js<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/kstep\/nginx-autoindex-js\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/kstep\/nginx-autoindex-js<\/a><\/p>\n<p>\u041a\u0430\u043a\u00a0\u0438 \u0432\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<p><code>$ cd \/srv\/www\/public<\/code><br \/><code>$ wget https:\/\/github.com\/kstep\/nginx-autoindex-js\/archive\/refs\/heads\/master.zip<\/code><br \/><code>$ unzip master.zip<\/code><\/p>\n<p>\u0425\u043e\u0442\u044f \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u00a0\u0431\u0430\u0437\u0435 JavaScript \u0438 JSON,\u00a0\u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0\u0434\u0432\u0443\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441\u00a0\u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0412\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>nginx-autoindex-js-master<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043b\u0438 \u0438\u0437\u00a0\u0430\u0440\u0445\u0438\u0432\u0430 \u0441\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"https:\/\/github.com\/kstep\/nginx-autoindex-js\/blob\/master\/index.html\" rel=\"noopener noreferrer nofollow\"><code>index.html<\/code><\/a>, \u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 AJAX\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0449\u0435:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  json; }  location \/autoindex\/ {      alias \/srv\/www\/public\/nginx-autoindex-js-master\/; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#alias\" rel=\"noopener noreferrer nofollow\"><code>alias<\/code><\/a> \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#root\" rel=\"noopener noreferrer nofollow\"><code>root<\/code><\/a>. \u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <code>alias<\/code> \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u044c \u043f\u0443\u0442\u0438 \u0438\u0437 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#location\" rel=\"noopener noreferrer nofollow\"><code>location<\/code><\/a>, \u0430 <code>root<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u00a0\u043d\u0435\u043c\u0443. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u0430, \u0442. \u043a. \u044f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0443 <code>\/autoindex\/<\/code> \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0441\u044f \u0444\u0430\u0439\u043b <code>\/srv\/www\/public\/nginx-autoindex-js-master\/index.html<\/code>. \u0410\u00a0\u0435\u0441\u043b\u0438\u00a0\u0431\u044b \u0442\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <code>root<\/code>, \u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u044b\u0442\u0430\u043b\u0441\u044f\u00a0\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a\u00a0\u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 <code>\/srv\/www\/public\/nginx-autoindex-js-master\/autoindex\/index.html<\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0443 404.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0438 \u0437\u0430\u0434\u0430\u0442\u044c URI, \u043a\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c AJAX\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u0444\u0430\u0439\u043b <code>config.json<\/code>. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0443\u0436\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0442\u0430\u043c \u043f\u043e\u0434\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/kstep\/nginx-autoindex-js\/blob\/master\/config-example.json\" rel=\"noopener noreferrer nofollow\"><code>config-example.json<\/code><\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e:<\/p>\n<p><code>$ cd \/srv\/www\/public\/nginx-autoindex-js-master\/<\/code><br \/><code>$ mv config-example.json config.json<\/code><\/p>\n<p>\u0418 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043b\u044e\u0431\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u0430\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c, \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c <code>nano<\/code>:<\/p>\n<p><code>$ nano config.json<\/code><\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"json\">$ cat config.json { \"base_index_url\": \"\/angie\/\", \"tail_slash\": false }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 <code>index.html<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/example.org\/autoindex\/<\/code>, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f AJAX\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a <code>http:\/\/example.org\/angie\/<\/code>.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430.\u00a0 \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043c\u0435\u043d\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #13 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001115537 \"angie: worker process is shutting down #12\"              \u251c\u25001115538 \"angie: worker process is shutting down #12\"              \u251c\u25001115540 \"angie: worker process is shutting down #12\"              \u251c\u25001118845 \"angie: worker process #13\"              \u251c\u25001118846 \"angie: worker process #13\"              \u251c\u25001118847 \"angie: worker process #13\"              \u2514\u25001118848 \"angie: worker process #13\"  ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u00a0\u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438\u043b\u0438\u00a0\u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u0432\u00a0\u043b\u043e\u0433\u0435<\/a>:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u042f \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e\u00a0\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u042d\u0442\u043e \u043d\u0435 <code>location \/angie\/<\/code>, \u0433\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>autoindex<\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e JSON, \u0430\u00a0\u0442\u043e\u0442 <code>location<\/code>, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u043e \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442.\u00a0\u0435. \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>http:\/\/example.org\/autoindex\/<\/code>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c71\/90c\/1d5\/c7190c1d5332075970b862bf2fe29b26.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 kstep\/nginx-autoindex-js\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 kstep\/nginx-autoindex-js\" width=\"1000\" height=\"628\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c71\/90c\/1d5\/c7190c1d5332075970b862bf2fe29b26.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 kstep\/nginx-autoindex-js<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u00a0\u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a\u00a0\u0432\u0441\u0435\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0435\u0442\u0430\u0435\u0442! \u0412\u0441\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u043d\u0430\u00a0\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0433\u043e\u0440\u043e\u0434\u0435, \u0430\u00a0\u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0431\u0443\u0434\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0448\u044c\u0441\u044f \u043f\u043e\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0434\u0438\u0441\u043a\u0443. \u0412\u0438\u0434\u0438\u043c\u043e, \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u00a0DOM\u2011\u0434\u0435\u0440\u0435\u0432\u043e\u043c.<\/p>\n<p>\u0423\u00a0\u0442\u0435\u043c\u044b \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u043e\u00a0\u043e\u043d\u0430 \u043b\u0435\u0433\u043a\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043c\u0430: <a href=\"https:\/\/github.com\/kstep\/nginx-autoindex-js\/issues\/1\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/kstep\/nginx-autoindex-js\/issues\/1<\/a><\/p>\n<p>\u041d\u0443\u0436\u043d\u043e\u00a0\u043b\u0438\u0448\u044c \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a\u00a0\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0442\u0438\u043a\u0435\u0442\u0435. \u0418\u043d\u0430\u0447\u0435 \u043f\u0440\u0438\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0443\u0442\u0438 \u043a\u00a0\u0444\u0430\u0439\u043b\u0430\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u0435.<\/p>\n<h4>spring-raining\/pretty-autoindex<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/spring-raining\/pretty-autoindex\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/spring-raining\/pretty-autoindex<\/a><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<p><code>$ cd \/srv\/www\/public<\/code><br \/><code>$ wget https:\/\/github.com\/spring-raining\/pretty-autoindex\/archive\/refs\/heads\/master.zip<\/code><br \/><code>$ unzip master.zip<\/code><\/p>\n<p>\u041a\u0430\u043a\u00a0\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0442\u0435\u043c\u0430, \u044d\u0442\u0430 \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0435\u00a0\u0431\u0443\u0434\u0443; \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u00a0\u044f\u0441\u043d\u043e, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0443\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b.<\/p>\n<p>\u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"nginx\">location \/angie\/ {      root \/srv\/www\/public\/;       autoindex  on;      autoindex_format  json; }  location \/autoindex\/ {      alias \/srv\/www\/pretty-autoindex-master\/dist\/; }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e\u00a0\u0441\u0430\u043c\u043e \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u00a0\u0432\u0438\u0434\u0435 <a href=\"https:\/\/github.com\/spring-raining\/pretty-autoindex\/blob\/master\/dist\/index.html\" rel=\"noopener noreferrer nofollow\"><code>index.html<\/code><\/a> \u0441\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/spring-raining\/pretty-autoindex\/tree\/master\/dist\" rel=\"noopener noreferrer nofollow\"><code>\/dist\/<\/code><\/a>, \u043a\u0443\u0434\u0430 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#alias\" rel=\"noopener noreferrer nofollow\"><code>alias<\/code><\/a> \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a <a href=\"https:\/\/github.com\/spring-raining\/pretty-autoindex\/blob\/master\/dist\/config.js\" rel=\"noopener noreferrer nofollow\"><code>config.js<\/code><\/a>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c URI \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432\u00a0\u043f\u043e\u043b\u0435 <code>address<\/code>:<\/p>\n<pre><code class=\"javascript\">$ cd \/srv\/www\/pretty-autoindex-master\/dist\/ $ cat config.js var conf = {   name: 'pretty-autoindex',   address: '\/angie',    visibilityOptions: {       size: {             use: true,           type: 'readable' \/\/raw, readable, both       },       date: {           use: true,           type: 'moment' \/\/raw, moment, both       }   } };<\/code><\/pre>\n<p>\u042f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043b \u0442\u0443\u0442 <code>\/angie<\/code> \u0431\u0435\u0437\u00a0\u0441\u043b\u044d\u0448\u0430 \u043d\u0430\u00a0\u043a\u043e\u043d\u0446\u0435, \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0443\u0434\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u044d\u0448\u0435\u0439, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443, \u043d\u043e\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435:<\/p>\n<pre><code># service angie status \u25cf angie.service - Angie - high performance web server ...      CGroup: \/system.slice\/angie.service              \u251c\u25001107395 \"angie: master process v1.8.2 #14 [\/usr\/sbin\/angie -c \/etc\/angie\/angie.conf]\"              \u251c\u25001118847 \"angie: worker process is shutting down #13\"              \u251c\u25001119847 \"angie: worker process #14\"              \u251c\u25001119848 \"angie: worker process #14\"              \u251c\u25001119849 \"angie: worker process #14\"              \u2514\u25001119850 \"angie: worker process #14\"  ...<\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/core\/#error-log\" rel=\"noopener noreferrer nofollow\">\u043b\u043e\u0433<\/a> \u043e\u0448\u0438\u0431\u043e\u043a \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e:<\/p>\n<p><code># cat \/var\/log\/angie\/error.log<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b, \u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 <code>http:\/\/example.org\/autoindex\/<\/code> \u043f\u0440\u0438\u043c\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/036\/ab3\/0ae\/036ab30ae1ba69366bd15e3ce7e7df3a.png\" alt=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 spring-raining\/pretty-autoindex\" title=\"\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 spring-raining\/pretty-autoindex\" width=\"1260\" height=\"656\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/036\/ab3\/0ae\/036ab30ae1ba69366bd15e3ce7e7df3a.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043c\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430 spring-raining\/pretty-autoindex<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u0438\u0445\u2011\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0442\u0435\u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/#server\" rel=\"noopener noreferrer nofollow\"><code>server<\/code><\/a>, \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u043d\u043e\u00a0\u044f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0435\u0451 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0439.<\/p>\n<hr\/>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u0443\u00a0\u043c\u0435\u043d\u044f \u0432\u0441\u0451 \u043f\u043e\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u043a\u0430\u043a\u0438\u0435\u2011\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438\u00a0\u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u0445 \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a\u00a0\u0441\u0442\u0430\u0442\u044c\u0435,\u00a0\u043b\u0438\u0431\u043e \u0443\u00a0\u043d\u0430\u0441 \u043d\u0430 <a href=\"https:\/\/forum.angie.software\/\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u0443\u043c\u0435<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/t.me\/angie_support\" rel=\"noopener noreferrer nofollow\">Telegram\u2011\u043a\u0430\u043d\u0430\u043b\u0435<\/a> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u0430\u043c \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a\u0438\u0435\u2011\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0442\u0435\u043c\u044b \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438\u043b\u0438\u00a0\u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0435\u0439, \u043d\u0435\u00a0\u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u00a0\u044d\u0442\u043e\u043c.<\/p>\n<p>\u0418\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u00a0\u0432\u0430\u0441 \u0435\u0449\u0451 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u043d\u043e\u00a0\u0438 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u00a0\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0442\u0435\u043d\u0430 \u043f\u0440\u0438\u00a0\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Angie<\/a>, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/890400\/\"> https:\/\/habr.com\/ru\/articles\/890400\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u0410\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441<\/em><\/strong><em>\u00a0\u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u0440\u0438\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u0432\u00a0\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432.<\/em><\/p>\n<p>\u041f\u043e\u0432\u043e\u0434\u043e\u043c \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u0437\u00a0\u043d\u0430\u0448\u0435\u0433\u043e <a href=\"https:\/\/t.me\/angie_support\" rel=\"noopener noreferrer nofollow\">Telegram\u2011\u0447\u0430\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438<\/a> (\u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c\u00a0\u2014 \u043e\u043d \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0445!): \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 Angie <\/a>\u0441\u0440\u0435\u0434\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/oss_packages\/#install-dynamicmodules-oss\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 <\/a>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Nginx Fancy Index?\u00bb.<\/p>\n<p>\u041c\u0435\u043d\u044f \u0443\u0434\u0438\u0432\u0438\u043b\u043e, \u0447\u0442\u043e\u00a0\u043a\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0449\u0451 \u0432 2014\u00a0\u0433\u043e\u0434\u0443 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u043e\u00a0\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0nginx \u043c\u043e\u0434\u0443\u043b\u044c \u00abautoindex\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 <a href=\"https:\/\/hg.nginx.org\/nginx\/rev\/33c08d7e2915\" rel=\"noopener noreferrer nofollow\">JSON<\/a> \u0438 <a href=\"https:\/\/hg.nginx.org\/nginx\/rev\/99751fe3bc3b\" rel=\"noopener noreferrer nofollow\">XML<\/a>, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432\u00a0\u0432\u043e\u043f\u0440\u043e\u0441\u0435,\u00a0\u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0432\u0435\u0434\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u0430\u0441\u043a\u0435\u0442\u0438\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0440\u0430\u0437\u0443\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c. \u0410\u00a0\u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0437\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043d\u0430\u00a0\u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445.<\/p>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u00a0<a href=\"https:\/\/angie.software\/angie\/docs\/\" rel=\"noopener noreferrer nofollow\">Angie<\/a>, \u043d\u043e\u00a0\u0432\u0441\u0435 \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0438 \u043a\u00a0nginx, \u0445\u043e\u0442\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0432\u043c\u0435\u0441\u0442\u043e Angie\u00a0\u2014 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u0434\u043d\u043e.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 <a href=\"https:\/\/angie.software\/angie\/docs\/oss_changes\/#angie-1-1-0\" rel=\"noopener noreferrer nofollow\">Angie \u0432\u0435\u0440\u0441\u0438\u0438 1.1.0<\/a> \u043c\u043e\u0434\u0443\u043b\u044c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/\" rel=\"noopener noreferrer nofollow\">autoindex<\/a>\u00a0\u0431\u044b\u043b \u0435\u0449\u0451 <a href=\"https:\/\/hg.angie.software\/angie\/rev\/76e89dbe9524\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d<\/a> \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 &#171;\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e&#187; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0442\u0430\u0440\u0431\u043e\u043b\u043e\u0432 \u043d\u0430\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u043e\u0433\u043e nginx:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u0440\u0438\u0432\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 nginx \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 https:\/\/nginx.org\/download\/<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 nginx-0.1.1.tar.gz \u0438\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 nginx-0.1.10.tar.gz \u0438 \u0442\u0430\u043a \u0434\u043e\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 nginx-0.1.19.tar.gz, \u0433\u0434\u0435 \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u043a\u0440\u0430\u043f\u043b\u0435\u043d\u0438\u0435 nginx-0.1.2.tar.gz\u2026 \u0438\u00a0\u0442.\u00a0\u0434.; \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 &#171;\u0442\u0443\u043f\u043e\u0435&#187; \u043f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e strcmp().<\/p>\n<p>\u0410\u00a0\u0432\u043e\u0442 \u043a\u0430\u043a\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u043e\u0439\u00a0\u0436\u0435\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u00a0Angie:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>&#171;\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f&#187; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Angie<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0434\u043b\u044f\u00a0\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0447\u043a\u0443 \u043f\u0443\u0441\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u042f\u00a0\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043d\u0430 <a href=\"https:\/\/download.angie.software\/files\/\" rel=\"noopener noreferrer nofollow\">\u0436\u0438\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a>, \u043d\u043e\u00a0\u043c\u044b \u0434\u043e\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0434\u043e\u00a0\u0434\u0432\u0443\u0445\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438!). \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432 Angie \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445.<\/p>\n<h2>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e\u00a0\u0432\u0441\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e-\u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0432\u00a0\u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0435\u0449\u0451 \u0432\u00a0nginx, \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0438\u0445 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b.<\/p>\n<h3>1. sub- \u0438 addition-\u0444\u0438\u043b\u044c\u0442\u0440\u044b<\/h3>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_sub\/#sub-filter\" rel=\"noopener noreferrer nofollow\"><code>sub_filter<\/code><\/a>) \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u043a\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 HTML\u2011\u0432\u044b\u0432\u043e\u0434\u0443 \u0441\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f CSS\u2011\u0441\u0442\u0438\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, JS\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0430\u00a0\u043f\u0440\u0438\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430\u2011\u0442\u043e \u044d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0448\u0438\u043c \u0431\u0435\u0437\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 autoindex, \u043d\u043e\u00a0\u043d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u043d\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c. \u0422\u0443\u0442 \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e.<\/p>\n<h3>2. &#171;Fancy Index&#187; \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p>\u0421\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0432\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0442\u043e, \u043a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0439 HTML: \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0438\u043b\u0438, \u043c\u0435\u043d\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0438\u00a0\u0442.\u00a0\u043f.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0418 \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435 nginx \u0435\u0433\u043e \u043d\u0435\u0442; \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u043e\u0434\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<p>\u0410\u00a0\u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043e \u0441\u0432\u0435\u0436\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043a\u043e\u043c\u0443, \u0432\u0435\u0434\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442) \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 ngx_fancyindex\u00a0\u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440, \u043f\u043e\u0445\u043e\u0436\u0435, \u0437\u0430\u0431\u0440\u043e\u0441\u0438\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u00a0\u0441\u0432\u043e\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431, \u0432\u00a0\u043e\u0431\u0449\u0435\u043c\u2011\u0442\u043e, \u043d\u0435\u0434\u0430\u043b\u0435\u043a\u043e \u0443\u0448\u0435\u043b \u043e\u0442\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430.<\/p>\n<h3>3. XML + XSLT<\/h3>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format xml;<\/code><\/a> \u0438 \u0440\u043e\u0434\u043d\u043e\u0439 autoindex \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML. \u042d\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0430\u043b\u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u0443\u044e\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438\u00a0\u0434\u0430\u0436\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_xslt\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e XSLT\u2011\u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/a>:<\/p>\n<pre><code class=\"nginx\">location \/ { \u00a0\u00a0\u00a0\u00a0autoindex on; \u00a0\u00a0\u00a0\u00a0autoindex_format xml;  \u00a0\u00a0\u00a0\u00a0xslt_stylesheet \/path\/to\/template.xslt; }<\/code><\/pre>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d\u044b XSLT\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0XML. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0430\u00a0\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u0443\u044e HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443 \u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435. \u041d\u0430\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u00a0\u0442\u0430\u043a\u0438\u0445 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0418\u0437\u00a0\u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f XSLT\u2011\u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442\u00a0libxml2\/libxslt.<\/p>\n<p>\u0410\u00a0\u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 HTML \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043b\u044e\u0431\u043e\u0433\u043e\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0438\u0434\u0430, \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0430\u00a0\u043f\u043e\u0442\u043e\u043c\u0443 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c JavaScript.<\/p>\n<p>\u0418 \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u00a0HTML. \u041c\u043e\u0436\u043d\u043e \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 CSV, \u0438\u043b\u0438\u00a0\u0434\u0430\u0436\u0435 \u0432\u044b\u0432\u0435\u0441\u0442\u0438\u00a0\u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e ASCII\u2011\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0435 curl\u2011\u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u0438\u0437\u00a0\u043a\u043e\u043d\u0441\u043e\u043b\u0438\u00a0\u2014 \u0432\u0435\u0434\u044c \u0432\u00a0\u0432\u0430\u0448\u0438\u0445 \u0440\u0443\u043a\u0430\u0445 \u0432\u0441\u044f \u043c\u043e\u0449\u044c XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h3>4. JSON(P) + JavaScript<\/h3>\n<p>\u041a\u0430\u043a\u00a0\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u043e\u00a0\u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format json;<\/code><\/a>,\u00a0\u043b\u0438\u0431\u043e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_autoindex\/#autoindex-format\" rel=\"noopener noreferrer nofollow\"><code>autoindex_format jsonp;<\/code><\/a> \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 JSON \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u0442\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u00a0\u0435\u0433\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_js\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e JS\u2011\u043c\u043e\u0434\u0443\u043b\u044f<\/a> \u0441\u00a0JSON \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u043e\u00a0\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u043c \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442.\u00a0\u0435. \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_addition\/\" rel=\"noopener noreferrer nofollow\">addition\u2011\u0444\u0438\u043b\u044c\u0442\u0440<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/modules\/http\/http_ssi\/\" rel=\"noopener noreferrer nofollow\">\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e SSI<\/a>, \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0JSON \u0438 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u043d\u0435\u043a\u0438\u0439 HTML\u2011\u0448\u0430\u0431\u043b\u043e\u043d \u0441\u00a0JavaScript\u2011\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0434\u043b\u044f\u00a0\u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0410\u00a0\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u0434\u0430\u0447\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 HTML\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u00a0JS\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 JSON, \u0438 \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0418\u0437\u00a0\u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c\u00a0\u2014 \u0440\u0430\u0437\u0432\u0435 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 JavaScript \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u0438\u043b\u0438\u00a0\u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435\u00a0\u0436\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u0436\u0438\u043c\u0430\u044e\u0442\u0441\u044f. \u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u00a0\u0445\u043e\u0434\u0435 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d.<\/p>\n<p>\u0415\u0441\u043b\u0438\u00a0\u0436\u0435 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0449\u0451 \u0438 WebDAV, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043d\u043e\u00a0\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u00a0\u043d\u0438\u043c\u0438.<\/p>\n<h2>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0410\u00a0\u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0GitHub.<\/p>\n<p>\u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u00a0deb\u2011\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435. \u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c <a href=\"https:\/\/angie.software\/angie\/docs\/installation\/oss_packages\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043b\u044f\u00a0\u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c<\/a>, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0438 \u0448\u0430\u0433\u0438 \u043d\u0430\u00a0\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. \u0410\u00a0\u0434\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u00a0nginx \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 <a href=\"https:\/\/angie.software\/angie\/docs\/configuration\/migration\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/a>.<\/p>\n<p>\u0423\u00a0\u0441\u0435\u0431\u044f \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (<code>\/etc\/angie\/angie.conf<\/code>):<\/p>\n<pre><code class=\"nginx\">events {}  http {     server {         listen  80; \u00a0\u00a0\u00a0\u00a0           location \/angie\/ {         \u00a0\u00a0\u00a0\u00a0root \/srv\/www\/public;      \u00a0 \u00a0     autoindex  on;         }     } }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0441 \u043d\u0435\u0439 Angie:<\/p>\n<p><code># service angie start<\/code><\/p>\n<p>\u0418 \u043e\u0442\u043a\u0440\u044b\u0432 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/example.org\/angie\/<\/code>, \u044f \u043c\u043e\u0433\u0443 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0430\u0432\u0442\u043e\u2011\u0438\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>http:\/\/example.org\/angie\/<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0434\u043b\u044f\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432,\u00a0\u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f <code>\/srv\/www\/public\/angie\/<\/code> \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Angie.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 XSLT-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f XML<\/h3>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 XSLT\u2011\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 XML, \u0434\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u0432\u00a0\u043d\u0430\u0448 <code>location<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <code>autoindex_format xml<\/code>: <\/p>\n<pre><code class=\"nginx\">location \/angie\/ {     root \/srv\/www\/public;      autoindex  on;     autoindex_format  xml; }<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code># service angie reload<\/code><\/p>\n<p>\u0418 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0442\u0432\u0435\u0442:<\/p>\n<pre><code class=\"bash\">$ curl https:\/\/example.org\/angie\/ &lt;?xml version=\"1.0\"?&gt; &lt;list&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;auto&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;conf&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;contrib&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;html&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;man&lt;\/directory&gt; &lt;directory mtime=\"2025-02-13T11:02:48Z\"&gt;src&lt;\/directory&gt; &lt;directory mtime=\"2025-03-09T18:59:03Z\"&gt;tests&lt;\/directory&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"22662\"&gt;CHANGES&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"36858\"&gt;CHANGES.ru&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"1358\"&gt;LICENSE&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"570\"&gt;README&lt;\/file&gt; &lt;file mtime=\"2025-02-13T04:40:13Z\" size=\"2422\"&gt;configure&lt;\/file&gt; &lt;\/list&gt;<\/code><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u0432\u0438\u0434\u0438\u043c, \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 XML\u2011\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;list&gt;<\/code>. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;directory&gt;<\/code>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;file&gt;<\/code>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;other&gt;<\/code> \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, unix\u2011\u0441\u043e\u043a\u0435\u0442). \u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0423\u00a0\u043d\u0438\u0445 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>mtime<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 ISO 8601, \u0430\u00a0\u0443\u00a0\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <code>&lt;file&gt;<\/code> \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>size<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u00a0\u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 xslt\u2011\u043c\u043e\u0434\u0443\u043b\u044c:<\/p>\n<pre><code># apt install angie-module-xslt ... Unpacking angie-module-xslt (1.8.2-1~noble) ... Setting up angie-module-xslt (1.8.2-1~noble) ... ----------------------------------------------------------------------  The XSLT dynamic module for Angie has been installed. To enable this module, add the following to \/etc\/angie\/angie.conf and reload angie:  load_module modules\/ngx_http_xslt_filter_module.so;  Please refer to the modules documentation for further details: https:\/\/en.angie.software\/angie\/docs\/configuration\/modules\/http\/http_xslt\/<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0432\u043e\u00a0\u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0430\u043c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f\u00a0\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0422\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c: \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"nginx\">events {}  load_module  modules\/ngx_http_xslt_filter_module.so;  http {     ... }<\/code><\/pre>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u044b, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>EvilVir\/Nginx-Autoindex<\/h4>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/EvilVir\/Nginx-Autoindex\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/EvilVir\/Nginx-Aut<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-452952","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/452952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=452952"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/452952\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=452952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=452952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=452952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}