在 Apache 代理后面为 S3 静态网站 JS 获取 404
Posted
技术标签:
【中文标题】在 Apache 代理后面为 S3 静态网站 JS 获取 404【英文标题】:Getting 404 for S3 static website JS behind Apache proxy 【发布时间】:2019-02-03 13:20:34 【问题描述】:我有一个 Apache HTTP 服务器作为 AWS S3 静态网站前面的代理。所以http://example.com/testsite 会转到 S3 站点,但应该继续被视为从 http://example.com/testsite 访问。
最初的index.html
访问导致 200 响应,但是,所有运行的 javascript 文件都返回 404。它们位于 S3 根目录中,与 index.html
相同,但最终以 @ 访问987654323@ 而不是 http://example.com/testsite,因此我得到 404。
我希望有人可以帮助我解决我的 Apache 配置 sn-p(请参见下文),以便我获得正确的配置。
RedirectMatch permanent ^/$ /doorman/
Redirect /js/ /frontman/js/
...
...
<Location /testsite >
ProxyPreserveHost On
AuthType openid-connect
Require valid-user
ProxyPass <%= @s3_website %>/
ProxyPassReverse <%= @s3_website %>/
</Location>
【问题讨论】:
【参考方案1】:我通过以下配置解决了这个问题:
``` ProxyPreserveHost 关闭 AuthType openid-connect 需要有效用户 ProxyPass ProxyPassReverse
ProxyPreserveHost 关闭 AuthType openid-connect 需要有效用户 ProxyPass /assets/$1 ProxyPassReverse /assets/$1
ProxyPreserveHost 关闭 AuthType openid-connect 需要有效用户 ProxyPass ProxyPassReverse ```
关键部分是:
“ProxyPreserveHost Off” - 我的 S3 存储桶名称与代理不同,因此需要为“Off”。
“LocationMatch” - 需要这样代理才能匹配,并将 URL 请求映射到 S3 存储桶位置/对象。
【讨论】:
以上是关于在 Apache 代理后面为 S3 静态网站 JS 获取 404的主要内容,如果未能解决你的问题,请参考以下文章