Traefik — 2. блокировка по странам

3 июля 2023

В предыдущей статье я рассказывал как установить и настроить обратный прокси Traefik для организации доступа к различным сервисам и сайтам. Теперь займёмся немного безопасностью и запретим (или разрешим) доступ из некоторых стран.

Для этого будем использовать плагин GeoBlock.

Описание плагина и список стран для указания в конфигурации можно найти по ссылке.

Для подключения плагина необходимо добавить в конец файла статической конфигурации /data/traefik.yml следующие строки:

experimental:
  plugins:
    geoblock:
      moduleName: "github.com/PascalMinder/geoblock"
      version: "v0.2.6"

Теперь в файл динамической конфигурации (/data/custom/host.yml) добавляем ещё один middleware в соответствующий раздел:

http:
  middlewares:
    my-geoblock:
        plugin:
            geoblock:
                allowLocalRequests: "true"
                allowUnknownCountries: "false"
                api: https://get.geojs.io/v1/ip/country/{ip}
                apiTimeoutMs: "750"
                cacheSize: "15"
                blackListMode: false
                countries:
                    - RU
                    - BY
                forceMonthlyUpdate: "true"
                logAllowedRequests: "false"
                logApiRequests: "true"
                logLocalRequests: "false"
                unknownCountryApiResponse: nil

Здесь необходимо обратить внимание на следующие параметры:

  • allowLocalRequests — разрешать запросы из локальной сети. Ставим true, если это необходимо.
  • blackListMode — режим чёрного списка. Ставим true, если вам нужно по-умолчанию разрешать доступ всем, кроме указанных в списке. false — режим белого списка.
  • countries — здесь перечисляем список стран, которые нам нужно запретить (или разрешить).

Осталось лишь добавить созданный модификатор к необходимым доменам в разделе routers. Например:

http:
  routers:
    example-ssl:
      entryPoints:
        - https
      service: web-server1
      middlewares:
        - "my-geoblock"
      rule: Host(`example.com`) || Host(`www.example.com`)
  • docker/traefik_blokirovka_po_stranam.txt
  • Последнее изменение: 05.01.2026 23:44
  • r0wbh