хуйу нас не матерятся
Мы приступаем к самому интересному, настраиваем anti ddos шлюз. Нашим главным инструментом будет nginx. Но в этом случае нельзя его просто взять и поставить из репозитория, придётся его собрать самим.
Коннектимся к нашему шлюзу, и в домашней папке создаём директорию "nginx_install". Скачиваем следующие проекты:
Для nginx есть особенность, не каждая версия совместима с lua-nginx-module, посмотрите раздел https://github.com/openresty/lua-nginx-module#nginx-compatibility "Совместимость". На момент написания статьи, последняя протестированная версия - 1.11.2. У меня получилось собрать с самой свежей - 1.12.0.
Распаковываем все архивы:
Ставим дополнительные пакеты
apt install libssl-dev lua5.1 gcc make libpcre3 libpcre3-dev luarocks
make && make install
Переходим в папку с nginx и экспортируем пути до LuaJit:
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
Запускаем конфигуратор:
./configure --prefix=/opt/nginx
--with-http_ssl_module
--with-http_addition_module
--with-file-aio
--with-ld-opt="-Wl,-rpath,/usr/local/lib"
--add-module=/root/nginx_install/ngx_devel_kit-master
--add-module=/root/nginx_install/nginx_limit_speed_module-master
--add-module=/root/nginx_install/lua-nginx-module-master
Директивой --prefix=/opt/nginx мы задали папку куда nginx будет установлен. Там же будут и все конфиги.
Инсталлируем:
make -j2
make install
И пробуем запустить:
cd /opt/nginx/sbin/
./nginx
Если всё ок, то по http адресу нашего шлюза должна открыться страница приветствия nginx:
На данный момент это не окончательный вид конфигов, сейчас нам нужно подключить минимально необходимый функционал, чтобы проксировать запросы к нашему веб-серверу. Доводить конфиг до финального вида будем в следующей части инструкции.
Итак, главный конфиг nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
gzip on;
gzip_disable "msie6";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /opt/nginx/conf/mime.types;
default_type application/octet-stream;
access_log /opt/nginx/logs/access.log;
error_log /opt/nginx/logs/error.log;
include /opt/nginx/conf/clients/*;
}
Создаём папку clients внутри /opt/nginx/conf, сюда мы будем складывать клиентские конфиги. И сразу добавляем первый тестовый конфиг: default.conf
server {
server_name default:80;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ЛОКАЛЬНЫЙ_IP_ВАШЕГО_ВЕБ-СЕРВЕРА:80;
}
}
Перезапускаем nginx:
cd /opt/nginx/sbin/
./nginx -s reload
И если мы нигде не накосячили, то должна загрузиться страница phpinfo, которую мы поставили в качестве заглушки в прошлой статье.
На этом этап предварительной настройки шлюза закончен. Переходим к созданию lua модуля для nginx.