<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nginx on IT / AI</title><link>https://it.ikt.su/tags/nginx/</link><description>Recent content in Nginx on IT / AI</description><generator>Hugo</generator><language>ru</language><lastBuildDate>Thu, 27 Aug 2026 13:00:00 +0300</lastBuildDate><atom:link href="https://it.ikt.su/tags/nginx/index.xml" rel="self" type="application/rss+xml"/><item><title>Свой веб-сервер на Docker: чек-лист развёртывания</title><link>https://it.ikt.su/posts/2026-08-27-web-server-na-docker-chek-list/</link><pubDate>Thu, 27 Aug 2026 13:00:00 +0300</pubDate><guid>https://it.ikt.su/posts/2026-08-27-web-server-na-docker-chek-list/</guid><description>&lt;p&gt;Памятка по развёртыванию веб-сервера для нескольких сайтов в Docker.&lt;/p&gt;
&lt;h2 id="1-база"&gt;1. База&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;обновить систему, настроить SSH-ключи, отключить вход по паролю;&lt;/li&gt;
&lt;li&gt;установить Docker и compose-плагин;&lt;/li&gt;
&lt;li&gt;выделить под проекты отдельный каталог (например, &lt;code&gt;/opt/stacks&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-реверс-прокси"&gt;2. Реверс-прокси&lt;/h2&gt;
&lt;p&gt;Один контейнер nginx (или Traefik/NPM) принимает весь трафик и раздаёт его по доменам или портам. Для схемы «по портам» каждый сайт получает свой порт:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;server&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;listen&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;801&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;server_name&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;example.com&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;root&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;/srv/sites/example/public&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-права-и-безопасность"&gt;3. Права и безопасность&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;файлы сайтов — отдельная группа с правами на чтение для контейнера;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server_tokens off;&lt;/code&gt; и лишние порты закрыты файрволом;&lt;/li&gt;
&lt;li&gt;пароли и ключи — в &lt;code&gt;.env&lt;/code&gt;, который не попадает в репозиторий.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-бэкапы"&gt;4. Бэкапы&lt;/h2&gt;
&lt;p&gt;Минимум: cron + tar по конфигам и исходникам, ротация 7 дней. Проверяйте восстановление до того, как оно понадобится.&lt;/p&gt;</description></item></channel></rss>