{"id":477993,"date":"2026-04-29T16:16:13","date_gmt":"2026-04-29T16:16:13","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=477993"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=477993","title":{"rendered":"\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0433\u0430\u0439\u0434 \u043a\u0430\u043a \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438\u043c\u0435\u0442\u044c \u0438 \u043f\u0430\u043d\u0435\u043b\u044c 3X-UI \u0437\u0430 NGINX, \u0438 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u0430\u0432\u043d\u043e \u0447\u0438\u0442\u0430\u044e \u0425\u0430\u0431\u0440, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0418 \u0432\u043e\u0442, \u0442\u0435\u043c\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c. \u041d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 VPN-\u0441\u0435\u0440\u0432\u0435\u0440 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b), \u0438 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. <\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441. \u041f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0441\u0430\u0439\u0442\u0438\u043a, \u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043a\u0440\u0443\u043f\u043d\u0435\u0435. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0448\u0438\u043c.<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u0435\u043c, \u0431\u0435\u0437 VPN \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u0432\u044b\u0436\u0438\u0442\u044c. \u0414\u0430 \u0434\u0430\u0436\u0435 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u0431\u0445\u043e\u0434\u0430. \u041d\u043e \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0434\u043d\u0451\u043c \u0420\u041a\u041d \u0432\u044b\u043a\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u0430\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 VPN-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0418 \u0441\u0430\u043c\u0430\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#171;\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f&#187; \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 &#8212; \u043f\u0440\u043e\u0441\u0442\u0443\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0440\u0442\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u043f\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u0442\u0435\u0441\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434 apple.com, \u0442\u043e \u0432\u0430\u0441 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e &#171;\u043f\u043e \u043e\u0439\u043f\u0438 \u0432\u044b\u0447\u0435\u0441\u043b\u044f\u0442&#187;, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u044c. \u0410 \u043c\u044b \u0442\u0443\u0442 \u043d\u0435 \u043f\u043e\u0434 \u043a\u043e\u0433\u043e \u043d\u0435 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u043c\u0441\u044f &#8212; \u0441\u0435\u0440\u0432\u0438\u0441 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0448. \u041f\u0440\u043e\u0441\u0442\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#171;\u0441\u043a\u0440\u044b\u0442\u0430&#187; \u043e\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0433\u043b\u0430\u0437 :). \u041a\u0442\u043e \u0435\u0433\u043e \u0437\u043d\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442 \u0432 database.mydomain.site \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f NGINX, \u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u0442\u0438\u043f\u0430 3x-ui, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0435\u0441\u043b\u0438 \u0432\u044b \u043c\u0430\u0437\u043e\u0445\u0438\u0441\u0442 \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0433\u043e\u043b\u044b\u0439 XRAY), \u043e\u0434\u043d\u0430\u043a\u043e \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u0437\u0430 \u0449\u0438\u0442\u043e\u043c NGINX, \u0438 \u0440\u0438\u0441\u043a\u043e\u0432 \u0441 \u043d\u0435\u0439 \u043d\u0435\u0442 :).<\/p>\n<h2>\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0443 NGINX \u0431\u0443\u0434\u0435\u0442 stream-block \u0441 ssl preread. \u0422\u043e\u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f, \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c: &#171;\u0442\u0430\u043a, \u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f?&#187;. \u0415\u0441\u043b\u0438 \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f \u043d\u0430 IP, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0436\u0435\u043c TLS-\u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u0435, \u0432\u044b\u0434\u0430\u0432\u0430\u044f SSL_ERROR_UNRECOGNIZED_NAME_ALERT (&#171;\u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435&#187;). \u0415\u0441\u043b\u0438 \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0434\u043e\u043c\u0435\u043d, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 HTTP-\u0431\u043b\u043e\u043a\u0435 NGINX\u0430, \u043b\u0438\u0431\u043e \u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u043d\u0430\u0448 inbound.<\/p>\n<figure class=\"bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/722\/af6\/183\/722af61836ac000577e635d8dfdf8bef.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\" width=\"771\" height=\"613\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/722\/af6\/183\/722af61836ac000577e635d8dfdf8bef.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/722\/af6\/183\/722af61836ac000577e635d8dfdf8bef.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c NGINX \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c stream. <\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0451\u043c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f NGINX \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c<\/h4>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.25 (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, listen 443 ssl; \u0432\u043c\u0435\u0441\u0442\u043e listen 443; ssl on;),  \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442 NGINX, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 (\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a &#171;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&#187; \u0438\u0434\u0451\u0442 1.18). \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f Debian\/Ubuntu, \u0434\u043b\u044f RHEL\/CentOS \u0438 \u0434\u0440. \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/nginx.org\/en\/linux_packages.html\" rel=\"noopener noreferrer nofollow\">https:\/\/nginx.org\/en\/linux_packages.html<\/a>.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<br \/>Debian:<br \/><code>sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring -y<\/code><br \/>Ubuntu:<br \/><code>sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring <\/code><\/p>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c GPG-\u043a\u043b\u044e\u0447:<br \/><code>curl <\/code><a href=\"https:\/\/nginx.org\/keys\/nginx%5C_signing.key\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/nginx.org\/keys\/nginx\\_signing.key<\/code><\/a><code> | gpg --dearmor \\    | sudo tee \/usr\/share\/keyrings\/nginx-archive-keyring.gpg &gt;\/dev\/null<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438 NGINX:<br \/><code>echo \"deb [signed-by=\/usr\/share\/keyrings\/nginx-archive-keyring.gpg] \\ https:\/\/nginx.org\/packages\/debian lsb_release -cs nginx\" \\     | sudo tee \/etc\/apt\/sources.list.d\/nginx.list<\/code><\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u044b\u0448\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e:<br \/><code>echo -e \"Package: *\\nPin: origin nginx.org\\nPin: release o=nginx\\nPin-Priority: 900\\n\" \\     | sudo tee \/etc\/apt\/preferences.d\/99nginx<\/code><\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:<br \/><code>sudo apt update &amp;&amp; sudo apt install nginx<\/code><\/p>\n<h3>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b<\/h3>\n<p>\u0412\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043c\u0435\u043d (\u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u044b \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442). \u041f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0430\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 90 \u0434\u043d\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e (\u043a\u0430\u043a \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0438\u0436\u0435) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0439 \u043e\u0442 Cloudflare. \u0415\u0441\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0435\u0442, \u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0438 \u0432\u044b\u0434\u0430\u0441\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 IP-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043b\u044e\u0441 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e acme.sh (\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u043e\u0440\u0442 80, \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043e\u043d\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u0434\u0438\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e \u0447\u0442\u043e\u0431\u044b (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439) ACME listener \u0441\u043b\u0443\u0448\u0430\u043b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u043d\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0438\u0434\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043f\u043e\u0440\u0442 80. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f &#171;\u0432\u0430\u0439\u0442\u043b\u0438\u0441\u0442\u0438\u0442\u044c&#187; \u043f\u0443\u0442\u044c <code>\/.well-known\/acme-challenge\/*<\/code>, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 &#171;\u0430\u0445\u0438\u043b\u0435\u0441\u043e\u0432\u043e\u0439 \u043f\u044f\u0442\u043e\u0439&#187; \u043d\u0430\u0448\u0435\u0439 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 Cloudflare<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u043c\u0435\u043d, \u0442.\u043a. \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442 &#171;\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445&#187; CA \u0442\u0438\u043f\u0430 GlobalSign. \u041f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 90 \u0434\u043d\u0435\u0439 \u043e\u0442 Let&#8217;s Encrypt. \u0422\u0430\u043a\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 ACME.sh listener (\u0438 \u0432\u0430\u0439\u0442\u043b\u0438\u0441\u0442\u043e\u043c), \u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 3 \u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c 3x-ui \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b<\/h2>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 3x-ui: <br \/><code>bash &lt;(curl -Ls https:\/\/raw.githubusercontent.com\/mhsanaei\/3x-ui\/master\/install.sh)<\/code><br \/><strong>\u041e\u0427\u0415\u041d\u042c \u0412\u0410\u0416\u041d\u042b\u0419 \u0421\u041e\u0412\u0415\u0422 \u041d\u0410 \u0411\u0423\u0414\u0423\u0429\u0415\u0415: \u041d\u0415 \u0412\u042b\u041f\u041e\u041b\u041d\u042f\u0419\u0422\u0415 \u041d\u0418\u041a\u0410\u041a\u0418\u0415 \u0421\u041a\u0420\u0418\u041f\u0422\u042b \u0418\u0417 \u0418\u041d\u0422\u0415\u0420\u041d\u0415\u0422\u0410, \u041f\u0415\u0420\u0415\u0414 \u0422\u0415\u041c \u041a\u0410\u041a \u0412\u042b \u0418\u0425 \u041f\u0420\u041e\u0427\u0418\u0422\u0410\u0415\u0422\u0415, \u0412\u0421\u0401 \u041d\u0410 \u0412\u0410\u0428 \u0421\u0422\u0420\u0410\u0425 \u0418 \u0420\u0418\u0421\u041a. \u0421\u043a\u0430\u0436\u0435\u0442\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043f\u043e\u0442\u043e\u043c.<\/strong><\/p>\n<p>\u041d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0430\u0442 \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Let&#8217;s Encrypt \u043b\u0438\u0431\u043e \u043d\u0430 \u0434\u043e\u043c\u0435\u043d (1), \u043b\u0438\u0431\u043e \u043d\u0430 IP (2). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e 3 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0443\u0442\u044c. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e <code>\/root\/cert\/mydomain_*.pem<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/638\/d0b\/62a\/638d0b62a35f48142d75997f9526cc19.png\" width=\"1069\" height=\"397\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/638\/d0b\/62a\/638d0b62a35f48142d75997f9526cc19.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/638\/d0b\/62a\/638d0b62a35f48142d75997f9526cc19.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438 NGINX \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u0427\u0442\u043e\u0431\u044b \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0444\u0438\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0443\u0434\u0430-\u0442\u043e. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0432\u0438\u0432\u0430\u0435\u043c inbound \u043d\u0430 XHTTP.<\/p>\n<div class=\"floating-image\">\n<figure class=\"float bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/417\/205\/fe4\/417205fe47414d046c0d413fa6b9b244.jpg\" alt=\"\u041a\u0430\u043a +- \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0430\u0448 inbound\" title=\"\u041a\u0430\u043a +- \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0430\u0448 inbound\" width=\"682\" height=\"1338\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/417\/205\/fe4\/417205fe47414d046c0d413fa6b9b244.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/417\/205\/fe4\/417205fe47414d046c0d413fa6b9b244.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043a +- \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0430\u0448 inbound<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u0412\u0410\u0416\u041d\u041e: <\/strong>\u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u0439\u0442\u0435 \u043d\u0430 0.0.0.0 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 Listen IP \u043f\u0443\u0441\u0442\u044b\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0443 \u0432\u0430\u0441 \u043d\u0430 localhost-\u0435 (127.0.0.1)! <strong>\u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u0430\u0448 inbound \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430.<\/strong><\/p>\n<p><strong>\u0412\u0410\u0416\u041d\u041e 2: <\/strong>\u041d\u0415 \u0421\u0422\u0410\u0412\u042c\u0422\u0415 \u0420\u0415\u0416\u0418\u041c auto! \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c grpc_pass, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e stream-one \u0438 stream-up! packet-up \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f! <\/p>\n<p><strong>\u0412\u0410\u0416\u041d\u041e 3: <\/strong>security \u041d\u0410 \u0421\u0415\u0420\u0412\u0415\u0420\u0415 \u0441\u0442\u0430\u0432\u044c\u0442\u0435 none, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f NGINX, \u0430 \u043d\u0435 XRAY, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0438\u0434\u0451\u0442 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 <strong>\u0413\u041e\u041b\u041e\u0413\u041e <\/strong>gRPC. \u0423 \u041a\u041b\u0418\u0415\u041d\u0422\u0410 \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u044f\u0442\u044c security TLS.<br \/>\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c &#171;\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a&#187; \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c security=tls \u043a\u043b\u0438\u0435\u043d\u0442\u0443.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0438\u043d\u0431\u0430\u0443\u043d\u0434, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 (Panel Settings) &gt; Certificates &gt; <strong>\u0423\u0411\u0418\u0420\u0410\u0415\u0422\u0415 \u043f\u0443\u0442\u0438 \u0434\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 (\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 HTTPS)<\/strong><br \/>(\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e tls-in-tls, \u0447\u0442\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.)<\/p>\n<\/div>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 inbound. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438 nginx. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>\/etc\/nginx\/<\/code>. \u041d\u0430\u043c \u043d\u0443\u0436\u0435\u043d <code>nginx.conf<\/code>. (\u0422\u0435\u043c, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 &#8212; <code>\/usr\/local\/bin\/nginx\/conf\/nginx.conf<\/code>). \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0431\u043b\u043e\u043a stream:<\/p>\n<pre><code class=\"nginx\"># \u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439\u0442\u0435user  nginx;worker_processes  auto;error_log  logs\/error.log;error_log  logs\/error.log  notice;error_log  logs\/error.log  info;pid        logs\/nginx.pid;events {    worker_connections  1024;}########################################################################stream {        map $ssl_preread_server_name $backend {        mydomain.site                     webhook_backend;   # \u0412\u0430\u0448 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441        service.mydomain.site             panel_backend; # \u0412\u0430\u0448\u0430 \u043f\u0430\u043d\u0435\u043b\u044c        database.mydomain.site            inbound_1; # \u041d\u0430\u0448 inbound        default                           rejector;   # \u0421\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435    }        upstream webhook_backend {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u0422_\u0412\u0410\u0428\u0415\u0413\u041e_\u0421\u0415\u0420\u0412\u0418\u0421\u0410&gt;;                #\u041f\u043e\u0440\u0442 \u041d\u0415 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx, \u0430 \u0441\u0440\u0430\u0437\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.        }        upstream panel_backend {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u04221&gt;;                #\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438, \u0430 \u043f\u043e\u0440\u0442 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx! (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        upstream inbound_1 {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u04222&gt;;                 #\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0431\u0430\u0443\u043d\u0434\u0430, \u0430 \u043f\u043e\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx! (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        upstream rejector {                server 127.0.0.1:8011;                #\u041f\u043e\u0440\u0442 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 NGINX (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        server {                listen 443;                 ssl_preread on;                proxy_pass $backend;        }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0431\u043b\u043e\u043a\u0435 map \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f upstream-\u043e\u0432 ($backend).<br \/>\u041a\u0430\u0436\u0434\u044b\u0439 upstream \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u0431\u0438\u043d\u0434\u0438\u0442\u0441\u044f&#187; \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 IP \u0438 \u043f\u043e\u0440\u0442. <br \/>\u0412 \u0431\u043b\u043e\u043a\u0435 server \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c ssl_preread &#8212; \u0442.\u0435. \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d\/IP \u043b\u0435\u0442\u0438\u0442 \u0442\u0440\u0430\u0444\u0438\u043a, \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c proxy_pass \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 upstream \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e<\/p>\n<p>mydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u0432.<br \/>service.mydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 nginx-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 localhost (\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a; \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u043a\u0434\u044b\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u044e\u0434\u0430 &#171;\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a&#187; \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c IP \u0441 <code>127.0.0.1<\/code> \u043d\u0430 <code>database.mydomain.site<\/code>, \u043f\u043e\u0440\u0442 \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430 <code>443<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 <code>security<\/code> \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c <code>TLS<\/code>.<br \/>database.mydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 nginx-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 localhost (\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a; \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 XHTTP-inbound \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e grpc_pass.<br \/>default &#8212; \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 IP) &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0451\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 terminate SSL-\u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u044f.<\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0431\u043b\u043e\u043a\u0435 http.<\/p>\n<pre><code class=\"nginx\">http {    include       mime.types;    default_type  application\/octet-stream;      #\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 - \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439\u0442\u0435 (\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f)    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '                      '$status $body_bytes_sent \"$http_referer\" '                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';    access_log  logs\/access.log  main;    #######################################################################    #\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 connection_upgrade \u043b\u0438\u0431\u043e HTTP upgrade,     #\u043b\u0438\u0431\u043e close connection    map $http_upgrade $connection_upgrade {        default upgrade;        \"\"      close;    }    sendfile        on;    keepalive_timeout  65;    server_tokens off; #\u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u0443 \u043d\u0430\u0441 \u0432\u0435\u0440\u0441\u0438\u044f NGINX \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435    #\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 HTTPS    server {            listen 80;            server_name service.mydomain.site www.service.mydomain.site;            # Redirect all traffic to HTTPS            return 301 https:\/\/$host$request_uri;    }    server {            listen &lt;\u041f\u041e\u0420\u04221&gt; ssl;            server_name service.mydomain.site;            set_real_ip_from           127.0.0.1;            ssl_certificate     \/root\/cert\/mydomain.site\/fullchain.pem;            ssl_certificate_key \/root\/cert\/mydomain.site\/privkey.pem;            ssl_protocols       TLSv1.2 TLSv1.3;                        location ~ ^\/\u0412\u0430\u0448\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c(.*)$ {                                      #HTTP, \u043d\u0435 HTTPS, \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u043c tls-in-tls                proxy_pass             http:\/\/127.0.0.1:&lt;\u041f\u041e\u0420\u0422 \u041d\u0415\u041f\u041e\u0421\u0420\u0415\u0414\u0421\u0422\u0412\u0415\u041d\u041d\u041e \u0412\u0410\u0428\u0415\u0419 \u041f\u0410\u041d\u0415\u041b\u0418&gt;;                proxy_set_header Host  $host;                proxy_http_version     1.1;                proxy_set_header Upgrade    $http_upgrade;                proxy_set_header Connection $connection_upgrade;                        proxy_ssl_verify off;            }            #\u041f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e - \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0451\u0442 \u0443\u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435            #(\u0442.\u043a. 3x-ui \u0432\u044b\u0434\u0430\u0441\u0442 \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 security=none, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430\u0434\u043e \u043d\u0430 127.0.0.1 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f)            location ~ ^\/\u0412\u0430\u0448\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441-\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u0435\u043b\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a\/(.*)$ {                proxy_pass             http:\/\/127.0.0.1:&lt;\u041f\u041e\u0420\u0422 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422\u0427\u0418\u041a\u0410&gt;;                proxy_set_header Host  $host;                proxy_http_version     1.1;                proxy_set_header Upgrade    $http_upgrade;                proxy_set_header Connection $connection_upgrade;                            }                    #\u041f\u0440\u0438\u0442\u0432\u043e\u0440\u044f\u0435\u043c\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0438 \u0432\u044b\u0434\u0430\u0451\u043c Unauthorized, \u043c\u043e\u043b \u0447\u0435\u0433\u043e \u0432\u044b \u043b\u0435\u0437\u0435\u0442\u0435 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u044f\u043d\u043a\u0443?            location = \/ {                    return 401;            }            location \/ {                    return 404;            }    }    server {            listen &lt;\u041f\u041e\u0420\u04222&gt; ssl http2;            server_name database.mydomain.site;            ssl_certificate     \/root\/cert\/mydomain.site\/fullchain.pem;            ssl_certificate_key \/root\/cert\/mydomain.site\/privkey.pem;            ssl_protocols       TLSv1.2 TLSv1.3;                    client_header_timeout 5m;            keepalive_timeout 5m;            grpc_read_timeout 315;            grpc_send_timeout 5m;                    location \/\u0432\u0430\u0448\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 {                    client_max_body_size 0;                    client_body_timeout 5m;                    grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                    grpc_pass grpc:\/\/127.0.0.1:36490;                     #\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d gRPCs (\u0445\u043e\u0442\u044f \u043e\u043d \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f), \u0442\u0430\u043a \u043a\u0430\u043a TLS \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b NGINX.            }            location \/ {                    return 401; #\u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445             }    }    server {            listen 8011 ssl;            ssl_reject_handshake on; #\u041e\u0431\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435            ssl_protocols              TLSv1.2 TLSv1.3;    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441: &#171;\u0442\u0430\u043a, \u0430 \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u0437\u0438\u0442\u0441\u044f \u0441 \u0431\u043b\u043e\u043a\u043e\u043c http? \u041d\u0435\u043b\u044c\u0437\u044f \u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 inbound?&#187; \u041c\u043e\u0436\u043d\u043e. \u041d\u041e: \u0443 \u0432\u0430\u0441 \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0438\u0434\u0451\u0442 \u043e\u0442\u0432\u0435\u0442 404, \u0434\u0430 \u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 404, \u0430 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0410 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0436\u0438\u043c stream-one, \u043d\u0435 packet-up \u0438\u043b\u0438 stream-up (\u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0435\u043d\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e). <\/p>\n<p>\u0418, \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430, \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435: &#171;\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0432\u0437\u044f\u043b\u0441\u044f grpc_pass??? \u0423 \u043d\u0430\u0441 \u0436\u0435 XHTTP?&#187;. \u0410 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0442\u0440\u044e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0438, \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.29.4, \u043a\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 h2 \u0432 upstream, \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u043e h2), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421 grpc_pass \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 stream-one, \u0438 stream-up (\u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439). Packet-up <em>\u043c\u043e\u0436\u043d\u043e<\/em> \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u043d\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 \u0434\u043b\u044f packet-up (\u0442.\u043a. \u043d\u0443\u0436\u0435\u043d proxy_pass \u0432\u043c\u0435\u0441\u0442\u043e grpc_pass), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c proxy_http_version 2, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 http2 <strong>\u0431\u0435\u0437 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 http2, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 1.29.2 \u0438 \u043d\u0438\u0436\u0435).<\/strong> \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f 1.29, \u0435\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 http2 + multiplex \u0434\u043b\u044f streams &#8212; \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435, \u043c\u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 NGINX, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0433\u043e \u0442\u0430\u043a \u0441\u043a\u043e\u0440\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041c\u043e\u0436\u0435\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u043c\u0435\u043d\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432.<\/p>\n<h2>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c security=none \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432<\/h2>\n<p>\u0418\u0442\u0430\u043a, NGINX \u0438 3x-ui \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b, \u043c\u043e\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c! \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0435 inbound \u0438\u0437 \u043f\u0430\u043d\u0435\u043b\u0438 &#8212; \u0443 \u0432\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e (\u043a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435) \u0432\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 listen ip \u043d\u0430 127.0.0.1, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 security=none \u0438 \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043d\u0443\u0436\u0435\u043d \u0432\u0430\u0448 \u0434\u043e\u043c\u0435\u043d, \u0430 security=tls, \u0442\u0430\u043a \u043a\u0430\u043a NGINX \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442 TLS, \u0430 \u043d\u0430 \u0441\u0432\u043e\u0439 localhost \u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043c\u0430\u043b\u043e :). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u0435 middleware, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 &#171;\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c&#187; \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438. \u042f \u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442: <a href=\"https:\/\/github.com\/JM001113\/VPN_sub_middleware\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/JM001113\/VPN_sub_middleware<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u044f \u0447\u0438\u0441\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0438 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 URL \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0448\u0430\u0433 \u043d\u0438\u0436\u0435:<\/p>\n<ul>\n<li>\n<p>Security &#8212; \u0432\u043c\u0435\u0441\u0442\u043e <code>none<\/code>&#8212; <code>TLS<\/code><\/p>\n<\/li>\n<li>\n<p>ALPN &#8212; <code>http\/1.1,h2<\/code><\/p>\n<\/li>\n<li>\n<p>host= (\u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u0443\u0441\u0442\u043e\u0439, \u0430 \u043e\u043d \u0443 \u043d\u0430\u0441 \u043f\u0443\u0441\u0442\u043e\u0439)<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u0432\u044c\u0442\u0435 FastAPI, \u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 .env.example (\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0432 .env). \u0423\u0447\u0442\u0438\u0442\u0435 \u0447\u0442\u043e \u043e\u043d \u0441\u0434\u0435\u043b\u0430\u043d \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442, \u0442\u0430\u043a \u0447\u0442\u043e 100% \u0431\u0443\u0434\u0443\u0442 \u0431\u0430\u0433\u0438. Pull requests are welcome, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c.<\/p>\n<pre><code class=\"markdown\"># Service bind portSUB_PORT=\u0412\u0430\u0448 \u043f\u043e\u0440\u0442 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f NGINX# Upstream 3x-ui subscription sourceBASE_SUB_PORT=\u041f\u043e\u0440\u0442 subscription end \u043f\u0430\u043d\u0435\u043b\u0438BASE_SUB_URL=Base url \u0434\u043b\u044f subscription \u0441\u0435\u0440\u0432\u0438\u0441\u0430UPSTREAM_HOST=127.0.0.1 (\u0438\u043b\u0438 \u0441\u0430\u0439\u0442 \u0435\u0441\u043b\u0438 middleware \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435)# Rewrites applied to every supported linkTARGET_HOST=\u0414\u043e\u043c\u0435\u043d \u0418\u041d\u0411\u0410\u0423\u041d\u0414\u0410!TARGET_PORT=\u041f\u043e\u0440\u0442 \u0434\u043e\u043c\u0435\u043d\u0430 \u0438\u043d\u0431\u0430\u0443\u043d\u0434\u0430 (443)TARGET_LINK_NAME=\u0418\u043c\u044f \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438# \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0438\u043f\u0430 SNI \u0432 XHTTP settings# TARGET_SNI=server.example.com# Upstream request timeoutUPSTREAM_TIMEOUT_SECONDS=10<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 venv <code>python -m venv venv<\/code>, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 (<code>source venv\/bin\/activate<\/code>), \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>pip install -r requirements.txt<\/code>, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>python main.py<\/code>. NGINX \u0443\u0436\u0435 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h3>\u041f\u043b\u044e\u0441\u044b \u043c\u043e\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430<\/h3>\n<ol>\n<li>\n<p>\u0415\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439, \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/habr.com\/ru\/articles\/785186\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u043c <\/a>\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 (\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439, \u043a\u0441\u0442\u0430\u0442\u0438, \u044f \u043f\u043e\u00a0\u043d\u0435\u043c\u0443 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438) \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d, \u043d\u043e\u00a0\u043d\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0415\u0441\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u044b\u0434\u0430\u0451\u0442 404\u00a0\u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0410\u00a0\u0435\u0441\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 database.\u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438\u00a0service.\u0434\u043e\u043c\u0435\u043d, \u0438\u043b\u0438\u00a0api.\u0434\u043e\u043c\u0435\u043d \u0432\u044b\u0434\u0430\u0451\u0442 403\u00a0\u0438\u043b\u0438 401, \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e inbound\u2011\u043e\u0432\u00a0\u2014 \u043c\u043e\u0436\u043d\u043e\u00a0\u043b\u0438\u0431\u043e \u043d\u0430\u043a\u043b\u0435\u043f\u0430\u0442\u044c \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u043e\u0432 (\u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e!),\u00a0\u043b\u0438\u0431\u043e\u00a0\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e secret paths, \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u043b\u044f\u00a0\u0441\u0432\u043e\u0435\u0433\u043e inbound.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u00ab\u0432 \u0448\u0438\u0440\u0438\u043d\u0443\u00bb\u00a0\u2014 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0439\u043f\u0438\u0448\u043d\u0438\u043a\u043e\u0432 \u043d\u0430\u00a0\u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438\u00a0\u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d, \u0438 \u0443\u00a0\u0432\u0430\u0441 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 fault tolerant \u0441\u0438\u0441\u0442\u0435\u043c\u0430:). \u0410\u00a0\u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u0439\u043f\u0438\u0448\u043d\u0438\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u0430, \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u043d\u0430\u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438, \u0442\u043e\u043b\u044c\u043a\u043e A\u2011\u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041c\u0438\u043d\u0443\u0441\u044b<\/h3>\n<ol>\n<li>\n<p>\u0421\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439\u00a0\u2014 \u043a\u0430\u043a\u00a0\u0438 \u0432\u00a0\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435, \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u0437\u0430\u0431\u044b\u0442\u044c, \u0430\u00a0\u043d\u0435\u00a0\u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u0441\u0451. \u0418 \u044f \u043d\u0430\u00a0\u044d\u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u00a0\u043c\u043e\u0433\u0443 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0442\u0430\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f\u00a0\u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043b\u0438\u00a0\u0443\u00a0\u043a\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u0435\u043d \u0434\u043e\u043c\u0435\u043d. \u0414\u0430, \u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0443\u043f\u0438\u0442\u044c, \u0438 \u0434\u0430\u0436\u0435 \u0434\u0451\u0448\u0435\u0432\u043e, \u043d\u0430\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 namecheap.top \u0441\u0442\u043e\u0438\u0442 3$ \u0437\u0430\u00a0\u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043e\u0434 \u0438 6$ \u0437\u0430\u00a0\u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435, \u043d\u043e \u044f \u043d\u0435 \u0434\u0443\u043c\u0430\u044e \u0447\u0442\u043e \u0432\u0441\u0435 \u0445\u043e\u0442\u044f\u0442 \u043c\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043a\u0443\u043f\u043a\u043e\u0439 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u042f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0432\u0435\u0440\u0435\u043d, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043c, \u0442.\u043a. \u0432\u0440\u044f\u0434 \u043b\u0438 \u0443 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u00ab\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u044c\u00bb VPN\u2011\u0441\u0435\u0440\u0432\u0438\u0441. \u041d\u0443 \u0430\u00a0\u043f\u0440\u043e\u00a0\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u043b\u0447\u0443. \u042d\u0442\u043e \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u00a0\u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0438. \u041d\u043e \u0437\u0430\u0442\u043e \u044d\u0442\u043e \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0438 feedback \u043e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0447\u0435\u043d\u044c \u043d\u0443\u0436\u0435\u043d. \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430!<\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/785186\/\" rel=\"noopener noreferrer nofollow\">\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u043b\u0441\u044f<\/a><\/p>\n<\/div>\n<p>\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\/1029782\/\">https:\/\/habr.com\/ru\/articles\/1029782\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0414\u0430\u0432\u043d\u043e \u0447\u0438\u0442\u0430\u044e \u0425\u0430\u0431\u0440, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0418 \u0432\u043e\u0442, \u0442\u0435\u043c\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c. \u041d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 VPN-\u0441\u0435\u0440\u0432\u0435\u0440 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b), \u0438 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. \u0421\u0440\u0430\u0437\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441. \u041f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0441\u0430\u0439\u0442\u0438\u043a, \u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043a\u0440\u0443\u043f\u043d\u0435\u0435. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0448\u0438\u043c.\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u0435\u043c, \u0431\u0435\u0437 VPN \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u0432\u044b\u0436\u0438\u0442\u044c. \u0414\u0430 \u0434\u0430\u0436\u0435 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u0431\u0445\u043e\u0434\u0430. \u041d\u043e \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0434\u043d\u0451\u043c \u0420\u041a\u041d \u0432\u044b\u043a\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u0430\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 VPN-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0418 \u0441\u0430\u043c\u0430\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#171;\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f&#187; \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 &#8212; \u043f\u0440\u043e\u0441\u0442\u0443\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0440\u0442\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u043f\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u0442\u0435\u0441\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434 apple.com, \u0442\u043e \u0432\u0430\u0441 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e &#171;\u043f\u043e \u043e\u0439\u043f\u0438 \u0432\u044b\u0447\u0435\u0441\u043b\u044f\u0442&#187;, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u044c. \u0410 \u043c\u044b \u0442\u0443\u0442 \u043d\u0435 \u043f\u043e\u0434 \u043a\u043e\u0433\u043e \u043d\u0435 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u043c\u0441\u044f &#8212; \u0441\u0435\u0440\u0432\u0438\u0441 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0448. \u041f\u0440\u043e\u0441\u0442\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#171;\u0441\u043a\u0440\u044b\u0442\u0430&#187; \u043e\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0433\u043b\u0430\u0437 :). \u041a\u0442\u043e \u0435\u0433\u043e \u0437\u043d\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442 \u0432 database.mydomain.site \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.\u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f NGINX, \u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u0442\u0438\u043f\u0430 3x-ui, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0435\u0441\u043b\u0438 \u0432\u044b \u043c\u0430\u0437\u043e\u0445\u0438\u0441\u0442 \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0433\u043e\u043b\u044b\u0439 XRAY), \u043e\u0434\u043d\u0430\u043a\u043e \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u0437\u0430 \u0449\u0438\u0442\u043e\u043c NGINX, \u0438 \u0440\u0438\u0441\u043a\u043e\u0432 \u0441 \u043d\u0435\u0439 \u043d\u0435\u0442 :).\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0443 NGINX \u0431\u0443\u0434\u0435\u0442 stream-block \u0441 ssl preread. \u0422\u043e\u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f, \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c: &#171;\u0442\u0430\u043a, \u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f?&#187;. \u0415\u0441\u043b\u0438 \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f \u043d\u0430 IP, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0436\u0435\u043c TLS-\u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u0435, \u0432\u044b\u0434\u0430\u0432\u0430\u044f SSL_ERROR_UNRECOGNIZED_NAME_ALERT (&#171;\u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435&#187;). \u0415\u0441\u043b\u0438 \u0441\u0442\u0443\u0447\u0430\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0434\u043e\u043c\u0435\u043d, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 HTTP-\u0431\u043b\u043e\u043a\u0435 NGINX\u0430, \u043b\u0438\u0431\u043e \u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u043d\u0430\u0448 inbound.\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c NGINX \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c stream. \u0421\u043e\u0437\u0434\u0430\u0451\u043c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f NGINX \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.25 (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, listen 443 ssl; \u0432\u043c\u0435\u0441\u0442\u043e listen 443; ssl on;),  \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442 NGINX, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 (\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a &#171;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&#187; \u0438\u0434\u0451\u0442 1.18). \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f Debian\/Ubuntu, \u0434\u043b\u044f RHEL\/CentOS \u0438 \u0434\u0440. \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0437\u0434\u0435\u0441\u044c: https:\/\/nginx.org\/en\/linux_packages.html.\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:Debian:sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring -yUbuntu:sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c GPG-\u043a\u043b\u044e\u0447:curl https:\/\/nginx.org\/keys\/nginx\\_signing.key | gpg &#8212;dearmor \\    | sudo tee \/usr\/share\/keyrings\/nginx-archive-keyring.gpg &gt;\/dev\/null\u0421\u043e\u0437\u0434\u0430\u0451\u043c APT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438 NGINX:echo &#171;deb [signed-by=\/usr\/share\/keyrings\/nginx-archive-keyring.gpg] \\ https:\/\/nginx.org\/packages\/debian lsb_release -cs nginx&#187; \\     | sudo tee \/etc\/apt\/sources.list.d\/nginx.list\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u044b\u0448\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e:echo -e &#171;Package: *\\nPin: origin nginx.org\\nPin: release o=nginx\\nPin-Priority: 900\\n&#187; \\     | sudo tee \/etc\/apt\/preferences.d\/99nginx\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:sudo apt update &amp;&amp; sudo apt install nginx\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0412\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043c\u0435\u043d (\u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u044b \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442). \u041f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0430\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 90 \u0434\u043d\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e (\u043a\u0430\u043a \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0438\u0436\u0435) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0439 \u043e\u0442 Cloudflare. \u0415\u0441\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0435\u0442, \u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0438 \u0432\u044b\u0434\u0430\u0441\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 IP-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043b\u044e\u0441 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e acme.sh (\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u043e\u0440\u0442 80, \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043e\u043d\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u0434\u0438\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e \u0447\u0442\u043e\u0431\u044b (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439) ACME listener \u0441\u043b\u0443\u0448\u0430\u043b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u043d\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0438\u0434\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043f\u043e\u0440\u0442 80. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f &#171;\u0432\u0430\u0439\u0442\u043b\u0438\u0441\u0442\u0438\u0442\u044c&#187; \u043f\u0443\u0442\u044c \/.well-known\/acme-challenge\/*, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 &#171;\u0430\u0445\u0438\u043b\u0435\u0441\u043e\u0432\u043e\u0439 \u043f\u044f\u0442\u043e\u0439&#187; \u043d\u0430\u0448\u0435\u0439 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438.\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 Cloudflare\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u043c\u0435\u043d, \u0442.\u043a. \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442 &#171;\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445&#187; CA \u0442\u0438\u043f\u0430 GlobalSign. \u041f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 90 \u0434\u043d\u0435\u0439 \u043e\u0442 Let&#8217;s Encrypt. \u0422\u0430\u043a\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 ACME.sh listener (\u0438 \u0432\u0430\u0439\u0442\u043b\u0438\u0441\u0442\u043e\u043c), \u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 3 \u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e.\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c 3x-ui \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 3x-ui: bash &lt;(curl -Ls https:\/\/raw.githubusercontent.com\/mhsanaei\/3x-ui\/master\/install.sh)\u041e\u0427\u0415\u041d\u042c \u0412\u0410\u0416\u041d\u042b\u0419 \u0421\u041e\u0412\u0415\u0422 \u041d\u0410 \u0411\u0423\u0414\u0423\u0429\u0415\u0415: \u041d\u0415 \u0412\u042b\u041f\u041e\u041b\u041d\u042f\u0419\u0422\u0415 \u041d\u0418\u041a\u0410\u041a\u0418\u0415 \u0421\u041a\u0420\u0418\u041f\u0422\u042b \u0418\u0417 \u0418\u041d\u0422\u0415\u0420\u041d\u0415\u0422\u0410, \u041f\u0415\u0420\u0415\u0414 \u0422\u0415\u041c \u041a\u0410\u041a \u0412\u042b \u0418\u0425 \u041f\u0420\u041e\u0427\u0418\u0422\u0410\u0415\u0422\u0415, \u0412\u0421\u0401 \u041d\u0410 \u0412\u0410\u0428 \u0421\u0422\u0420\u0410\u0425 \u0418 \u0420\u0418\u0421\u041a. \u0421\u043a\u0430\u0436\u0435\u0442\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043f\u043e\u0442\u043e\u043c.\u041d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0430\u0442 \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Let&#8217;s Encrypt \u043b\u0438\u0431\u043e \u043d\u0430 \u0434\u043e\u043c\u0435\u043d (1), \u043b\u0438\u0431\u043e \u043d\u0430 IP (2). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e 3 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0443\u0442\u044c. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \/root\/cert\/mydomain_*.pem.\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0446\u0438\u0438\u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438 NGINX \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u0427\u0442\u043e\u0431\u044b \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0444\u0438\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0443\u0434\u0430-\u0442\u043e. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0432\u0438\u0432\u0430\u0435\u043c inbound \u043d\u0430 XHTTP.\u041a\u0430\u043a +- \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0430\u0448 inbound\u0412\u0410\u0416\u041d\u041e: \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u0439\u0442\u0435 \u043d\u0430 0.0.0.0 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 Listen IP \u043f\u0443\u0441\u0442\u044b\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0443 \u0432\u0430\u0441 \u043d\u0430 localhost-\u0435 (127.0.0.1)! \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u0430\u0448 inbound \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430.\u0412\u0410\u0416\u041d\u041e 2: \u041d\u0415 \u0421\u0422\u0410\u0412\u042c\u0422\u0415 \u0420\u0415\u0416\u0418\u041c auto! \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c grpc_pass, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e stream-one \u0438 stream-up! packet-up \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f! \u0412\u0410\u0416\u041d\u041e 3: security \u041d\u0410 \u0421\u0415\u0420\u0412\u0415\u0420\u0415 \u0441\u0442\u0430\u0432\u044c\u0442\u0435 none, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f NGINX, \u0430 \u043d\u0435 XRAY, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0438\u0434\u0451\u0442 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0413\u041e\u041b\u041e\u0413\u041e gRPC. \u0423 \u041a\u041b\u0418\u0415\u041d\u0422\u0410 \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u044f\u0442\u044c security TLS.\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c &#171;\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a&#187; \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c security=tls \u043a\u043b\u0438\u0435\u043d\u0442\u0443.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0438\u043d\u0431\u0430\u0443\u043d\u0434, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 (Panel Settings) &gt; Certificates &gt; \u0423\u0411\u0418\u0420\u0410\u0415\u0422\u0415 \u043f\u0443\u0442\u0438 \u0434\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 (\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 HTTPS)(\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e tls-in-tls, \u0447\u0442\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.)\u0418\u0442\u0430\u043a, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 inbound. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438 nginx. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \/etc\/nginx\/. \u041d\u0430\u043c \u043d\u0443\u0436\u0435\u043d nginx.conf. (\u0422\u0435\u043c, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 &#8212; \/usr\/local\/bin\/nginx\/conf\/nginx.conf). \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0431\u043b\u043e\u043a stream:# \u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439\u0442\u0435user  nginx;worker_processes  auto;error_log  logs\/error.log;error_log  logs\/error.log  notice;error_log  logs\/error.log  info;pid        logs\/nginx.pid;events {    worker_connections  1024;}########################################################################stream {        map $ssl_preread_server_name $backend {        mydomain.site                     webhook_backend;   # \u0412\u0430\u0448 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441        service.mydomain.site             panel_backend; # \u0412\u0430\u0448\u0430 \u043f\u0430\u043d\u0435\u043b\u044c        database.mydomain.site            inbound_1; # \u041d\u0430\u0448 inbound        default                           rejector;   # \u0421\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435    }        upstream webhook_backend {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u0422_\u0412\u0410\u0428\u0415\u0413\u041e_\u0421\u0415\u0420\u0412\u0418\u0421\u0410&gt;;                #\u041f\u043e\u0440\u0442 \u041d\u0415 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx, \u0430 \u0441\u0440\u0430\u0437\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.        }        upstream panel_backend {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u04221&gt;;                #\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438, \u0430 \u043f\u043e\u0440\u0442 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx! (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        upstream inbound_1 {                server 127.0.0.1:&lt;\u041f\u041e\u0420\u04222&gt;;                 #\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0440\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0431\u0430\u0443\u043d\u0434\u0430, \u0430 \u043f\u043e\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 nginx! (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        upstream rejector {                server 127.0.0.1:8011;                #\u041f\u043e\u0440\u0442 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440\u0430 NGINX (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435)        }        server {                listen 443;                 ssl_preread on;                proxy_pass $backend;        }}\u0412 \u0431\u043b\u043e\u043a\u0435 map \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f upstream-\u043e\u0432 ($backend).\u041a\u0430\u0436\u0434\u044b\u0439 upstream \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u0431\u0438\u043d\u0434\u0438\u0442\u0441\u044f&#187; \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 IP \u0438 \u043f\u043e\u0440\u0442. \u0412 \u0431\u043b\u043e\u043a\u0435 server \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c ssl_preread &#8212; \u0442.\u0435. \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d\/IP \u043b\u0435\u0442\u0438\u0442 \u0442\u0440\u0430\u0444\u0438\u043a, \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c proxy_pass \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 upstream \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044d\u0442\u043e\u0433\u043emydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u0432.service.mydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 nginx-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 localhost (\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a; \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u043a\u0434\u044b\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u044e\u0434\u0430 &#171;\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a&#187; \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c IP \u0441 127.0.0.1 \u043d\u0430 database.mydomain.site, \u043f\u043e\u0440\u0442 \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430 443, \u0430 \u0442\u0430\u043a\u0436\u0435 security \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c TLS.database.mydomain.site &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 nginx-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 localhost (\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a; \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 XHTTP-inbound \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e grpc_pass.default &#8212; \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 IP) &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0451\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 terminate SSL-\u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u044f.\u0412\u0441\u0435 \u044d\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0431\u043b\u043e\u043a\u0435 http.http {    include       mime.types;    default_type  application\/octet-stream;      #\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439\u0442\u0435 (\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f)    log_format  main  &#8216;$remote_addr &#8212; $remote_user [$time_local] &#171;$request&#187; &#8216;                      &#8216;$status $body_bytes_sent &#171;$http_referer&#187; &#8216;                      &#8216;&#187;$http_user_agent&#187; &#171;$http_x_forwarded_for&#187;&#8216;;    access_log  logs\/access.log  main;    #######################################################################    #\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 connection_upgrade \u043b\u0438\u0431\u043e HTTP upgrade,     #\u043b\u0438\u0431\u043e close connection    map $http_upgrade $connection_upgrade {        default upgrade;        &#171;&#187;      close;    }    sendfile        on;    keepalive_timeout  65;    server_tokens off; #\u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u0443 \u043d\u0430\u0441 \u0432\u0435\u0440\u0441\u0438\u044f NGINX \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435    #\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 HTTPS    server {            listen 80;            server_name service.mydomain.site www.service.mydomain.site;            # Redirect all traffic to HTTPS            return 301 https:\/\/$host$request_uri;    }    server {            listen &lt;\u041f\u041e\u0420\u04221&gt; ssl;            server_name service.mydomain.site;            set_real_ip_from           127.0.0.1;            ssl_certificate     \/root\/cert\/mydomain.site\/fullchain.pem;            ssl_certificate_key \/root\/cert\/mydomain.site\/privkey.pem;            ssl_protocols       TLSv1.2 TLSv1.3;                        location ~ ^\/\u0412\u0430\u0448\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c(.*)$ {                                      #HTTP, \u043d\u0435 HTTPS, \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u043c tls-in-tls                proxy_pass          &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-477993","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/477993","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=477993"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/477993\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=477993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=477993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=477993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}