NGINX将HTTPS从任何域转发到特定URL
我正在实现一个内部DNS服务器,用于阻止针对恶意网站的特定DNS请求,使用针对bind9的DNSRBL列表。只要存在匹配项,DNS服务器就会使用提供块页面的内部NGINX服务器的IP进行响应 例如,当内部客户端请求时,DNS服务器以192.168.0.100为例进行响应,这是NGINX服务器的IP。然后NGINX使用301将请求转发到HTTPS站点,该站点向最终用户提供块页面消息 使用简单的NGINX配置可以很好地工作:NGINX将HTTPS从任何域转发到特定URL,nginx,Nginx,我正在实现一个内部DNS服务器,用于阻止针对恶意网站的特定DNS请求,使用针对bind9的DNSRBL列表。只要存在匹配项,DNS服务器就会使用提供块页面的内部NGINX服务器的IP进行响应 例如,当内部客户端请求时,DNS服务器以192.168.0.100为例进行响应,这是NGINX服务器的IP。然后NGINX使用301将请求转发到HTTPS站点,该站点向最终用户提供块页面消息 使用简单的NGINX配置可以很好地工作: server { listen 80 default_se
server {
listen 80 default_server;
server_name _;
return 301 https://block.xyz.com;
}
server {
listen 443 ssl;
server_name block.xyz.com;
ssl_certificate /etc/letsencrypt/live/block.xyz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/block.xyz.com/privkey.pem;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
我遇到的问题是当客户端请求HTTPS站点时,即:。我想将任何传入的SSL/443请求转发到。我已尝试添加以下指令:
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /etc/letsencrypt/live/block.xyz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/block.xyz.com/privkey.pem;
return 301 https://block.xyz.com;
}
我得到一个典型的SSL错误,说证书与域不匹配:NET::ERR\u CERT\u COMMON\u NAME\u INVALID,这是可以理解的。当我将指令从return更改为rewrite时,也会发生同样的情况:
...
rewrite ^ https://block.xyz.com;
....
如何在NGINX中添加一个指令来实现这一点?本指南()为我提供了一种实现类似于广告阻塞的http端的方法,但不涉及https请求
有什么线索吗?在
服务器中尝试添加:
if ($host != "block.xyz.com") {
rewrite ^/(.*) https://block.xyz.com/$1 permanent;
}
我试过了,但也没用。仍然得到SSL错误,而不是重写或转发到。在这方面,有几点可能会有所帮助。Pihole
可能是更好的解决方案。