AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 801662
Accepted
George
George
Asked: 2016-09-08 09:53:02 +0800 CST2016-09-08 09:53:02 +0800 CST 2016-09-08 09:53:02 +0800 CST

将第 3 方内容动态代理到 https

  • 772

我正在使用 java 和 apache,并且在我的安全页面上托管非安全的第 3 方内容,当我在 facebook 上共享我的页面时,facebooks 选项卡不会显示不安全的内容。我遇到了一篇描述这种行为的文章,我正在寻求纠正这个问题。https://www.tabsite.com/blog/chrome-and-other-browsers-not-showing-insecure-content/

由于我的内容提供商不提供安全内容,我的想法是使用 apache 将我的安全 URL 代理到第三方非安全 URL。

我将如何使我的代理动态化,这样我就不必不断地修改我的服务器映像?我最初的想法是在我的域前面加上第 3 方 URL

https://images.example.com?url=http://content-provider.com/image/1234.jpg

并用 apache rewrite 或其他东西解析它,但是我不确定这是一个合适的解决方案。我正在寻找一些想法和建议。

如何使用 mod_rewrite 将 url 重写为查询参数?

我尝试编写以下代码但没有成功

https://images.example.com?url=http://content-provider.com/image/1234.jpg

RewriteCond %{QUERY_STRING} ^url=(.*)$ [NC]
RewriteRule (.*)$ %1 [NC,L,R=301]

我希望http://content-provider.com/image/1234.jpg

proxy reverse-proxy mod-rewrite apache-2.4 querystring
  • 1 1 个回答
  • 618 Views

1 个回答

  • Voted
  1. Best Answer
    Unbeliever
    2016-09-08T11:56:39+08:002016-09-08T11:56:39+08:00

    以一种完全通用的方式来做这件事是很困难的。在您的示例中,您可以将“R=301”标志更改为“P”(用于代理),它应该可以工作(如果没有,请使用 rewritelog 进行调试)。

    否则,您必须有“某种方式”将请求 URI 映射到后端服务器,可能 rewritemap 在这里会有所帮助,但这取决于您对底层代理文件的实际位置了解多少。

    一种可能(但非常简单)的解决方案是,您可以拆分服务器并为其分配一个字母。

    ProxyPass /a/ http://content-provider-a.example.com/
    ProxyPass /b/ http://content-provider-b.example.com/
    ...
    

    然后是一般的 URI 路径 /a/path/to/file/on/provider-a/ 等。但同样你必须提前知道所有位置。

    如果你解释得更多,那么可能会有更多的建议。

    讨论后补充信息。首先,这里有一些关于 mod_rewrite 的好信息:Redirect, Change URLs or Redirect HTTP to HTTPS in Apache - 你曾经想知道的关于 Mod_Rewrite 规则但不敢问的一切

    您还应该花时间学习 PCRE。

    使用以下作为我们的基本配置,这里有一些解释:

    RewriteMap myquery "fastdbd:SELECT externalURL FROM photo WHERE id = %s"
    RewriteRule ^/images/(.*) ${myquery:$1} [P,L]
    

    $1 是对 RewriteRule 中匹配的字符串的反向引用,即括号内的 .*。%s 是传递给 RewriteMap 的参数,在这种情况下与 $1 相同。

    注意事项。Mod_rewrite 不适合胆小的人。它非常复杂,您应该期望花一些时间来解决这个问题。

    • 2

相关问题

  • 持续监控许多服务器运行状况的简单方法?

  • Web 代理脚本与 http 代理的效率?

  • 为将笔记本电脑带回家的用户模拟公司代理

  • 什么是 Microsoft 代理客户端(MSP 客户端)

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve