用于Mikrotik.com的nginx反向代理

时间:2018-08-26 05:57:30

标签: nginx nginx-reverse-proxy

您好,我们需要在我们的系统中缓存某些站点,例如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;
    }
}

1 个答案:

答案 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的全部目的就是阻止您执行这种操作,这基本上只是中间人攻击