Я загружаю каждые 30 минут список выходных узлов Tor https://www.dan.me.uk/torlist / и сохраните его в файле tor-ip.conf.
Мой хостер не позволяет устанавливать какие-либо модули для nginx, поэтому я должен использовать то, что у меня есть.
Я подумал включить файл в переменную и вызовите перенаправление, если оно должно совпадать.
nginx. Как я могу его установить?
Более простой способ блокировать пользователей Tor - использовать директиву deny
в nginx. Вы можете создать список запрещенных записей на основе torlist и включить его в конфигурацию nginx.
Как работает ваша cronjob для получения tor-ip.conf? Если вы можете выполнить некоторые команды оболочки, вы можете сделать что-то подобное Gist tiagoad / block-tor.sh
wget -qO- https://check.torproject.org/exit-addresses | grep ExitAddress | cut -d ' ' -f 2 | sed "s/^/deny /g; s/$/;/g" > blacklist.conf
Затем в nginx вы просто включаете черный список.
include blacklist.conf;
Файл содержит такие инструкции:
deny 100.0.53.178;
deny 100.15.114;
...
] Вам нужно перезагружать nginx каждый раз, когда изменяется черный список.
Если вы хотите перенаправить на специальную страницу. Вы можете попробовать использовать директиву error_page
в сочетании с директивой deny.
location / {
error_page 403 = @blacklisted;
include blacklist.conf;
}
location @blacklisted {
allow all;
return 301 https://www.google.com;
}
Может быть, проще, даже вот так:
location / {
error_page 403 =301 https://www.google.com;
include blacklist.conf;
}
Я не думаю, что вы можете сделать это с помощью базовых примитивов nginx. Вам нужно будет создать свой собственный сценарий Lua для чтения файла и реализации перенаправления.