Почему стандартные плагины jekyll далеки от идеала

11/Март/2025 jekyllstructured-datanginx

В этой заметке я не буду приводить полный код для всех компонентов, только дам сниппеты и подсказки, на что стоит обратить внимание при сборке сайта на jekyll.

Jekyll Structured Data and sitemap.xml 1535x697 jekyll-structured-data-sitemap-and-nginx.png
Jekyll Structured Data and sitemap.xml

Время модификации файла

Каждая страница имеет как минимум три точки отображения временной отметки в разных файлах, элементах страницы или ответе сервера, и все они должны быть одинаковыми.

  • ld+json "dateModified": "2025-03-07T15:43:42+00:00"
  • sitemap <lastmod>2025-03-07T15:43:42+00:00</lastmod>
  • headres last-modified: Fri, 07 Mar 2025 15:43:42 GMT
Почему стандартные плагины...

Блок головок жёсткого диска

22/Октябрь/2024 hdd

Блок магнитных головок 4032x3024 24-04-26_13-47-18.jpg
Блок магнитных головок


Блок головок жёсткого диска с четырьмя пластинами — 8 магнитных головок, для двустороннего чтения/записи информации с пластин.

Блок головок жёсткого...

Сгоревший SpaceX Starlink

1/Сентябрь/2024 starlink

Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-53-38.jpg
Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-54-23.jpg
Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-54-42.jpg


Сгоревший SpaceX Starlink...

Token-based лимитирование количества подключений

22/Июнь/2024 nginx

Nginx - аутентификация на основе токенов 1600x896 nginx_api_token.png
Nginx - аутентификация на основе токенов

Все знают про лимиты количества подключений с одного IP (IP-based), но что делать, если мы хотим ограничить количество подключений к некому API на один токен авторизации?
И не важно, сколько разных IP будет использовано.

Часть конфига nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
map $request_uri $client_token {
    "~*(?i)(token=)([a-f0-9]{32})" $2;      # regex return <32str>
    default                        "";      # Fallback to limit_req_zone:global
}

limit_req_zone  $binary_remote_addr   zone=global:32m       rate=100r/s;    # Rule_1
limit_req_zone  $client_token         zone=tokenlimit:32m   rate=5r/s;      # Rule_2
limit_req       zone=global           burst=25;

server {
        location / {
            index index.html;
            root /var/www/html;
        }
        location = /api {
            index index.html;
            root /var/www/api/html;
            limit_req   zone=tokenlimit   burst=5 nodelay;  # api location
            limit_req   zone=global;                        # Fallback
            limit_req_status              429;              # 503
Token-based лимитирование количества...

Xorg от непривилегированного пользователя

12/Январь/2024 gdm3xorgkvmsecurity

Cage for an unprivileged user 1600x900 unprivileged-user-cage.png
Cage for an unprivileged user

Образно.
Есть некий софт, которому нужны иксы.
Казалось бы, скачал, поставил, запустил - пользуйся.
Но вот, ведь, проблема, подобный софт (для меня подобный - абсолютно весь, не входящий в штатный репозиторий debian) я не хочу запускать:

  1. На своём хосте.
  2. От своего пользователя.
  3. Под Xorg моего пользователя.
  4. Допускать в мою/мои сети, в том числе 127.0.0.0

Кроме того, тот же браузер для “полазить” по сайтам и браузер для клиент-банка, это не один и тот же браузер, пользователь и, иногда, система.
Пункты 1, 2, 4, сейчас не рассматриваем, речь пойдёт об X.

В debian при стандартных настройках системы в качестве display manager используется LightDM.
В нём можно включить listen tcp, но процессы Xorg он запускает от root.
В gdm3 же наоборот, по умолчанию, он запускает Xorg от пользователя, который логинится в окружение, но в нём сломали возможность включить listen tcp.
Точнее оставили возможность выключить nolisten tcp,
но не включить listen tcp.

Для этого необходимо отредактировать обёртку над X.

Xorg от непривилегированного...
Страница 5 из 14