<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Don Alexey</title><generator>teletype.in</generator><description><![CDATA[Очередной блог об ИТ и около того]]></description><image><url>https://teletype.in/files/92/d7/92d71b43-3973-44d2-b87d-48b96643f318.jpeg</url><title>Don Alexey</title><link>https://blog.d-aa.ru/</link></image><link>https://blog.d-aa.ru/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=donalexey</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/donalexey?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/donalexey?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 06 May 2026 10:57:30 GMT</pubDate><lastBuildDate>Wed, 06 May 2026 10:57:30 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.d-aa.ru/zabbix_run_housekeeper</guid><link>https://blog.d-aa.ru/zabbix_run_housekeeper?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=donalexey</link><comments>https://blog.d-aa.ru/zabbix_run_housekeeper?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=donalexey#comments</comments><dc:creator>donalexey</dc:creator><title>Zabbix - принудительный запуск housekeeper (домработницы) для очистки истории</title><pubDate>Tue, 01 Dec 2020 08:03:38 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/0f/a6/0fa65afa-a70f-4fd2-be84-c65cba5dcf26.png"></media:content><category>Monitoring</category><description><![CDATA[<img src="https://teletype.in/files/16/9d/169d3c48-04f0-4f29-b817-a7b17941ab70.png"></img>Если вы используете Zabbix с PostgreSQL где установлено расширение TimescaleDB, то настройки периода хранения истории задаются глобально для всех элементов данных в Администрирование - Общие - Очистка истории]]></description><content:encoded><![CDATA[
  <p>Если вы используете Zabbix с PostgreSQL где установлено расширение TimescaleDB, то настройки периода хранения истории задаются глобально для всех элементов данных в <strong>Администрирование - Общие - Очистка истории</strong></p>
  <figure class="m_custom">
    <img src="https://teletype.in/files/16/9d/169d3c48-04f0-4f29-b817-a7b17941ab70.png" width="528" />
    <figcaption>Глобальные настройки хранения истории TimescaleDB</figcaption>
  </figure>
  <p>Изменив параметры периода хранения истории, например с 20d на 15d, мы можем существенно сэкономить место на диске, но Zabbix запускает housekeeper раз в час. Мы же не хотим ждать и хотим сейчас запустить процесс очистки истории.</p>
  <pre>zabbix_server -c /etc/zabbix/zabbix_server.conf -R housekeeper_execute</pre>
  <p>Административная функция отправит сигнал о запуске процедуры очистки базы данных, в случае с TimescaleDB очистка истории произойдёт мгновенно и на графике занятого места на диске будет приятная картинка освобождения места от лишней истории.</p>
  <figure class="m_original">
    <img src="https://teletype.in/files/f7/bb/f7bb3f17-40ad-40d4-9def-1ccae13db2fe.png" width="211" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.d-aa.ru/kZLH98LYN</guid><link>https://blog.d-aa.ru/kZLH98LYN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=donalexey</link><comments>https://blog.d-aa.ru/kZLH98LYN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=donalexey#comments</comments><dc:creator>donalexey</dc:creator><title>Nginx - обслуживание множества редиректов с помощью Nginx map</title><pubDate>Thu, 30 Jul 2020 16:00:05 GMT</pubDate><category>Web</category><tt:hashtag>nginx</tt:hashtag><tt:hashtag>web</tt:hashtag><description><![CDATA[Когда мы обновляем сайт, то возможно меняем адреса страниц и разделов, но поисковики продолжают выдавать в поиске старые страницы. Клиенты переходят на них из результатов поиска, получают ошибку 404. ]]></description><content:encoded><![CDATA[
  <h3>&quot;Ткнул&quot; в гугле, а получил 404 &quot;страница не найдена&quot;, почему так?</h3>
  <p>Когда мы обновляем сайт, то возможно меняем адреса страниц и разделов, но поисковики продолжают выдавать в поиске старые страницы. Клиенты переходят на них из результатов поиска, получают ошибку 404. </p>
  <p>Пользователь недоволен и уходит с сайта не разбираясь. Также сайт падает в рейтинге поисковика и как следствие в поисковой выдаче. </p>
  <p>Выход из данной ситуации логичен - нужен 301 (перманентный = постоянный) редирект на новый адрес страницы.</p>
  <p>Предположим, у нас был раздел <code>/nashy-raboty</code> и мы сменили его адрес на <code>/portfolio</code> (что более логично и понятнее), но наша CMS не обеспечивает перенаправление со старого адреса на новый. </p>
  <p>Выход - использовать редиректы на уровне веб сервера Nginx</p>
  <h3>Редирект в Nginx &quot;в лоб&quot;</h3>
  <p>В конфиге своего сайта мы можем написать что-то вроде</p>
  <pre>server {
# Тут про имя сервера и порт

location /nashy-raboty {
  return 301 /portfolio;
}

# Тут целевые локации вашего приложения
}</pre>
  <p>И это будет работать, при переходе на старый url пользователь будет перекинут на новый и он увидит, то что хотел. </p>
  <p>Роботы поисковиков зафиксируют 301 редирект (страница перемещена навсегда) и учтут это в своей индексации.</p>
  <h3>А если надо сделать 100500 редиректов?</h3>
  <p>Очевидно, что при большом количестве редиректов обслуживать конфигурацию nginx будет непросто и утомительно</p>
  <p>Выход использовать конструкцию map</p>
  <pre>map $request_uri $redirected_url {
  default &quot;none&quot;;
  /nashy-raboty /portfolio;
  /work /works; 
}

server {
# Тут про имя сервера и порт

if ($redirected_url != &quot;none&quot;) {
	rewrite ^ $redirected_url permanent;
	}

# Тут целевые локации вашего приложения
}</pre>
  <p>Как это работает?</p>
  <pre>map $uri $redirected_url {
  default &quot;none&quot;;
  /nashy-raboty /portfolio;
  /work /works; 
}</pre>
  <p>Задавать значение для переменной <strong>$redirected_url</strong> в зависимости от значения в переменной <strong>$uri</strong></p>
  <p><strong>$uri</strong> - встроенная переменная nginx которая содержит хвост запроса пользователя</p>
  <p>Получается, если запрос будет на <code>/nashy-raboty</code>, то в <strong>$redirected_url</strong> запишется значение <code>/portfolio</code> аналогично для второго правила с <code>/work</code> -&gt; <code>/works</code> если соответствия в map найдено не будет, то используется default = &quot;none&quot;</p>
  <pre>if ($redirected_url != &quot;none&quot;) {
	rewrite ^ $redirected_url permanent;
	}</pre>
  <p>Далее, если <strong>$redirected_url</strong> отличается от значения по умолчанию, то надо выполнить редирект на URL записанный в значении переменной <strong>$redirected_url</strong></p>
  <hr />
  <tt-tags>
    <tt-tag name="nginx">#nginx</tt-tag>
    <tt-tag name="web">#web</tt-tag>
  </tt-tags>

]]></content:encoded></item></channel></rss>