pta: Модуль аутентификации по периоду времени для NGINX
Установка на Debian/Ubuntu
Эти документы применимы к пакету APT nginx-module-pta, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-pta
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|-----------|-------------|----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
Обзор
Модуль PTA (аутентификация по периоду времени) — это модуль для NGINX. С помощью PTA вы можете контролировать доступ к вашему контенту. PTA вычисляет зашифрованную строку запроса или параметр cookie, который включает время истечения и путь к содержимому.
Использование
Ниже приведён пример nginx.conf.
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
pta_1st_key 0102030405060708090a0b0c0d0e0f00;
pta_1st_iv 00000000000000000000000000000000;
pta_2nd_key 11111111111111111111111111111111;
pta_2nd_iv 22222222222222222222222222222222;
location / {
root html;
index index.html index.htm;
}
location /foo/ {
pta_enable on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
pta_1st_key
- Синтаксис : pta_1st_key keystring
- По умолчанию : -
- Контекст : server
pta_1st_iv
- Синтаксис : pta_1st_iv ivstring;
- По умолчанию : -
- Контекст : server
pta_2nd_key
- Синтаксис : pta_2nd_key keystring;
- По умолчанию : -
- Контекст : server
pta_2nd_iv
- Синтаксис : pta_2nd_iv ivstring;
- По умолчанию : -
- Контекст : server
pta_enable
- Синтаксис : pta_enable on | off;
- По умолчанию : pta_enable off;
- Контекст : location
pta_auth_method
- Синтаксис : pta_auth_method qs | cookie | qs cookie;
- По умолчанию : pta_auth_method qs;
- Контекст : location
Как это работает
Модуль PTA расшифровывает строку запроса или параметр cookie, начиная с `pta=...' и проверяет CRC32, время истечения и запрашиваемый URI-путь, встроенные в него. Поэтому вам нужно сгенерировать токен PTA и добавить его в ссылку в качестве строки запроса или параметра cookie. В каталоге samples есть некоторый код для генерации PTA.
формат
Этот байтовый поток зашифрован с помощью шифрования AES в режиме CBC 128 бит.
+---------------+-------------------------+----------+-----------------+
| CRC32 (4byte) | Время истечения (8byte) | URI Path | Дополнения |
| | формат Unix Time | | формат pkcs #7 |
+---------------+-------------------------+----------+-----------------+
CRC32
Это формат Big Endian. Вычисляется из времени истечения и URI Path. Эта часть используется для проверки того, что расшифровка AES действительна.
Время истечения
Это формат Big Endian. Сравнивается с моментом поступления запроса, и если время меньше или равно времени истечения, содержащемуся в токене PTA, запрос разрешается.
URI Path
В основном он должен быть идентичен пути запрашиваемого контента.
Пример: http://example.com/index.html -> /index.html
Он должен начинаться со слэша `/'.
Символ аsterisk `*' означает подстановочный знак.
-
Символ `*' должен быть только один. Пример: /foo/*/bar/*.jpg не допускается.
-
Вы можете использовать символ `*' в любой части, такой как часть имени директории, имя файла или суффикс имени файла.
-
Если вы используете символ `*' в буквальном смысле, вы должны экранировать его обратным слэшем.
Строка запроса и Cookie
Директива pta_auth_method может указывать метод аутентификации. Вы можете выбрать тип строки запроса, cookie или оба в качестве метода.
В случае обоих методов сначала оценивается строка запроса, а затем выполняется проверка cookie, если параметр pta не включен в строку запроса. Когда параметр pta в строке запроса недействителен, аутентификация не проходит и не выполняется обратная проверка cookie. Только если в строке запроса отсутствует параметр pta, выполняется проверка cookie.