如果您不介意从源代码编译nginx,则可以安装ngx_http_proxy_connect_module。以下内容在Raspberry Pi上的Debian 9“ Stretch”中为我工作(在我将deb-src URL添加到/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
。nginx
如果您还在端口80上运行生产Web服务器,并且不想冒险惹恼它,它将与Debian的库存包共存(但请确保在启动时/usr/local
单独启动该版本);或者,通过更多配置,您可以从编译的Nginx中运行这两个服务。但是,如果您确实将已编译的nginx设置为在防火墙允许流量访问的端口上运行,请注意,由于Debian软件包系统将不再为您执行此操作,因此您必须手动检查nginx安全更新。