![Apache 通过 HTTPS 向任意 AWS S3 存储桶转发代理 HTTP 请求](https://linux22.com/image/650851/Apache%20%E9%80%9A%E8%BF%87%20HTTPS%20%E5%90%91%E4%BB%BB%E6%84%8F%20AWS%20S3%20%E5%AD%98%E5%82%A8%E6%A1%B6%E8%BD%AC%E5%8F%91%E4%BB%A3%E7%90%86%20HTTP%20%E8%AF%B7%E6%B1%82.png)
这是我原帖的重写。我仍然绞尽脑汁想弄清楚如何让自定义客户端(仅支持 HTTP、不支持 HTTPS 的 Windows 服务)通过 Apache 2.4 代理将文件上传到 Amazon AWS S3 存储桶。由于客户端不支持 HTTPS,我希望它通过 HTTP 访问任意 S3 存储桶,并让 Apache 代理在其自身和 S3 存储桶之间透明地使用 HTTPS,例如 HTTPS://bucket-name.s3-aws 区域.amazonaws.com,用于处理文件上传。简单的重写到目前为止还没有奏效。这不是重定向(mod_proxy [R,L] 标志),因为我不想将客户端重定向到 HTTPS URL,因为它无法执行 SSL。
我可以使用反向代理对单个存储桶执行此操作,但我不知道如何对任意数量的未指定存储桶使用反向代理,因为在 ProxyPass 和 ProxyPassReverse 设置中重要的是域。
我尝试做的事情真的可行吗?感觉应该是可以的……
答案1
这是绝对可能的,并且不需要代理服务器上的 Apache 具有 SSL 密钥,正如您所说(因为与该服务器的交互是通过 HTTP 进行的)。
基本上,您只需要使用类似于以下的相当基本的代理配置作为示例:
<VirtualHost *:80>
ServerName yourintendedname.com
SSLProxyEngine On
ProxyPreserveHost on
ProxyPass / https://upstreamserver.com:443/
ProxyPassReverse / https://upstreamserver.com:443/
</VirtualHost>
上述配置将所有流量请求的流量传输到https,yourintendedname.com
并将请求的 URI 按原样传递到。upstreamserver.com
现在,您可能会注意到的问题(也是我要求您在问题中提供更多详细信息的原因)是,请求的 URI 将按原样传递到要代理的服务器,这很可能会导致问题。只有您自己才能根据自己的情况找到解决方案。