<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Don Alexey</title><subtitle>Очередной блог об ИТ и около того</subtitle><author><name>Don Alexey</name></author><id>https://teletype.in/atom/donalexey</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/donalexey?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.d-aa.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=donalexey"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/donalexey?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-06T11:00:39.041Z</updated><entry><id>donalexey:zabbix_run_housekeeper</id><link rel="alternate" type="text/html" href="https://blog.d-aa.ru/zabbix_run_housekeeper?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=donalexey"></link><title>Zabbix - принудительный запуск housekeeper (домработницы) для очистки истории</title><published>2020-12-01T08:03:38.852Z</published><updated>2020-12-01T08:03:38.852Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/0f/a6/0fa65afa-a70f-4fd2-be84-c65cba5dcf26.png"></media:thumbnail><category term="monitoring" label="Monitoring"></category><summary type="html">&lt;img src=&quot;https://teletype.in/files/16/9d/169d3c48-04f0-4f29-b817-a7b17941ab70.png&quot;&gt;Если вы используете Zabbix с PostgreSQL где установлено расширение TimescaleDB, то настройки периода хранения истории задаются глобально для всех элементов данных в Администрирование - Общие - Очистка истории</summary><content type="html">
  &lt;p&gt;Если вы используете Zabbix с PostgreSQL где установлено расширение TimescaleDB, то настройки периода хранения истории задаются глобально для всех элементов данных в &lt;strong&gt;Администрирование - Общие - Очистка истории&lt;/strong&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/16/9d/169d3c48-04f0-4f29-b817-a7b17941ab70.png&quot; width=&quot;528&quot; /&gt;
    &lt;figcaption&gt;Глобальные настройки хранения истории TimescaleDB&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p&gt;Изменив параметры периода хранения истории, например с 20d на 15d, мы можем существенно сэкономить место на диске, но Zabbix запускает housekeeper раз в час. Мы же не хотим ждать и хотим сейчас запустить процесс очистки истории.&lt;/p&gt;
  &lt;pre&gt;zabbix_server -c /etc/zabbix/zabbix_server.conf -R housekeeper_execute&lt;/pre&gt;
  &lt;p&gt;Административная функция отправит сигнал о запуске процедуры очистки базы данных, в случае с TimescaleDB очистка истории произойдёт мгновенно и на графике занятого места на диске будет приятная картинка освобождения места от лишней истории.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/f7/bb/f7bb3f17-40ad-40d4-9def-1ccae13db2fe.png&quot; width=&quot;211&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>donalexey:kZLH98LYN</id><link rel="alternate" type="text/html" href="https://blog.d-aa.ru/kZLH98LYN?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=donalexey"></link><title>Nginx - обслуживание множества редиректов с помощью Nginx map</title><published>2020-07-30T16:00:05.940Z</published><updated>2021-08-19T09:23:07.457Z</updated><category term="web" label="Web"></category><tt:hashtag>nginx</tt:hashtag><tt:hashtag>web</tt:hashtag><summary type="html">Когда мы обновляем сайт, то возможно меняем адреса страниц и разделов, но поисковики продолжают выдавать в поиске старые страницы. Клиенты переходят на них из результатов поиска, получают ошибку 404. </summary><content type="html">
  &lt;h3&gt;&amp;quot;Ткнул&amp;quot; в гугле, а получил 404 &amp;quot;страница не найдена&amp;quot;, почему так?&lt;/h3&gt;
  &lt;p&gt;Когда мы обновляем сайт, то возможно меняем адреса страниц и разделов, но поисковики продолжают выдавать в поиске старые страницы. Клиенты переходят на них из результатов поиска, получают ошибку 404. &lt;/p&gt;
  &lt;p&gt;Пользователь недоволен и уходит с сайта не разбираясь. Также сайт падает в рейтинге поисковика и как следствие в поисковой выдаче. &lt;/p&gt;
  &lt;p&gt;Выход из данной ситуации логичен - нужен 301 (перманентный = постоянный) редирект на новый адрес страницы.&lt;/p&gt;
  &lt;p&gt;Предположим, у нас был раздел &lt;code&gt;/nashy-raboty&lt;/code&gt; и мы сменили его адрес на &lt;code&gt;/portfolio&lt;/code&gt; (что более логично и понятнее), но наша CMS не обеспечивает перенаправление со старого адреса на новый. &lt;/p&gt;
  &lt;p&gt;Выход - использовать редиректы на уровне веб сервера Nginx&lt;/p&gt;
  &lt;h3&gt;Редирект в Nginx &amp;quot;в лоб&amp;quot;&lt;/h3&gt;
  &lt;p&gt;В конфиге своего сайта мы можем написать что-то вроде&lt;/p&gt;
  &lt;pre&gt;server {
# Тут про имя сервера и порт

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

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

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

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

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

</content></entry></feed>