nginx - 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;
}
}
解决方案
我想这是因为该网站上的所有链接仍将指向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 的全部目的是阻止你做这种事情,这基本上只是一个中间人攻击
推荐阅读
- laravel - 帖子上的类别名称
- r - RStudio 访问可用作预览但不在全局环境中的数据框
- html - owl carousel 填充多张图片的空白高度
- database - Truecaller 聊天存储在手机内存的什么位置?
- python - 如何将值动态传递给 SQL 脚本
- node.js - 如何在 puppeteer 中查找节点的所有子节点
- reactjs - 尝试修复此错误“Node Sass 版本 6.0.1 与 ^4.0.0 || ^5.0.0 不兼容。”
- r - 基于列模式和其他列的新列
- node.js - 尝试删除文件夹时如何解决此问题,并显示错误 0x80004005:出现未指定错误消息的警报?
- javascript - 从radialLine上绘制的数据点获取半径