首页 > 解决方案 > Mikrotik.com 的 nginx 反向代理

问题描述

嗨,我们需要在我们的系统中缓存一些像mikrotik这样的网站,但是这个网站使用“HTTPS”协议,我们的缓存系统只缓存 HTTP 协议网站所以我们会考虑如果我们使用 nginx 作为反向代理,那么当客户端访问https://www 时。 mikrotik.com我们的 DNS 系统很好地重定向到 nginx 本地 ip 和 nginx 很好地从 mikrotik 获取数据作为HTTP 到客户端我们的问题是一切正常但是如果客户端访问 mikrotik 网页内的任何东西它很好地重定向到 mikrotik 原始站点.. 这是nginx 配置示例

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;
    }
}

标签: nginxnginx-reverse-proxy

解决方案


我想这是因为该网站上的所有链接仍将指向https://mikrotik.com/ ...您尚未代理

您可以尝试使用Nginx 子过滤器模块并重写 Nginx 中的所有链接,然后再将它们提供给您的网络。在你的 location 块中添加一些这样的指令将使 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 的全部目的是阻止你做这种事情,这基本上只是一个中间人攻击


推荐阅读