Если вы не возражаете против компиляции nginx из исходного кода, вы можете установить ngx_http_proxy_connect_module. В Debian 9 "Stretch" на Raspberry Pi мне помогло следующее (после того, как я добавил URL-адреса deb-src в /etc/apt/sources.list и выполнил обновление apt-get):
cd /tmp &&
apt-get source nginx &&
git clone https://github.com/chobits/ngx_http_proxy_connect_module &&
cd nginx-* &&
patch -p1 < ../ngx_http_proxy_connect_module/proxy_connect.patch &&
sudo apt-get install libpcre3-dev &&
./configure --add-module=/tmp/ngx_http_proxy_connect_module &&
make && sudo make install
Затем отредактируйте /usr/local/nginx/conf/nginx.conf
и сделайте так, чтобы он выглядел следующим образом (я включил пример доменов, которые вы хотите заблокировать, который работает как с SSL, так и без SSL-прокси):
user www-data;
worker_processes auto;
events { }
http {
server_names_hash_bucket_size 128;
server {
listen 8888;
server_name spam.example.com *.spam.example.com;
server_name spam2.example.com *.spam2.example.com;
access_log off;
return 404;
}
server {
listen 8888;
server_name ~.+;
proxy_connect;
proxy_max_temp_file_size 0;
resolver 8.8.8.8;
location / {
proxy_pass http://$http_host;
proxy_set_header Host $http_host;
}
}
}
Затем запустите /usr/local/nginx/sbin/nginx
. Он вполне с радостью будет сосуществовать со стандартным пакетом Debian nginx
, если вы также используете производственный веб-сервер на порту 80 и не хотите рисковать этим (но обязательно запустите /usr/local
версию отдельно при загрузке); альтернативно, с большей конфигурацией вы можете запускать обе службы из скомпилированного вами nginx. Но если вы настроите свой скомпилированный nginx для запуска на порт, на который ваш брандмауэр пропускает трафик, остерегайтесь того, что вам придется проверять обновления безопасности nginx вручную, поскольку система пакетов Debian больше не будет делать это за вас.