您好,我们需要在我们的系统中缓存某些站点,例如mikrotik,但是该站点使用的是“ HTTPS”协议,而我们的缓存系统仅缓存HTTP协议站点。因此,如果我们使用nginx作为反向代理,那么客户端访问https://www.mikrotik.com,我们的DNS系统会很好地重定向到nginx本地ip,并且nginx会以 HTTP 的身份从mikrotik提取数据到客户端,我们的问题没问题,但是如果客户端访问mikrotik网页内的任何内容,并将其重定向到mikrotik原始网站..这是nginx config的示例
server
{
listen 80;
server_name mikrotik.com;
location / {
proxy_pass https://mikrotik.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
答案 0 :(得分:0)
我想这是因为网站上的所有链接仍将指向https://mikrotik.com/ ...您尚未代理的
您可以尝试使用Nginx sub filter模块并重写Nginx中的所有链接,然后再将它们提供给网络。在位置块中添加诸如此类的指令,将使Nginx即时将https到http的链接重写:
location / {
....
....
sub_filter_types text/html;
sub_filter 'https://mikrotik.com/' 'http://mikrotik.com/';
sub_filter_once off;
sub_filter_last_modified on;
proxy_set_header Accept-Encoding "";
我将此配置用于类似目的,但使用相反的方式,因此从http转到https。不确定SSL是否会反过来为您工作,因为SSL的全部目的就是阻止您执行这种操作,这基本上只是中间人攻击