在Apache代理后面获取404 for S3静态网站JS

时间:2018-08-28 20:32:18

标签: apache amazon-s3 reverse-proxy httpd.conf

我在AWS S3静态网站的前面有一个Apache HTTP Server作为代理。因此,http://example.com/testsite进入了S3站点,但应始终被视为从http://example.com/testsite访问。

最初的index.html访问结果为200,但是,所有运行的JavaScript文件都返回404。它们位于S3根目录中,与index.html相同,但是最终被访问为http://example.com/而不是http://example.com/testsite,因此为什么我得到404。

我希望有人可以帮助我处理我的Apache配置代码段(请参见下文),以便获得正确的配置。

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 个答案:

答案 0 :(得分:0)

我通过以下配置解决了此问题:

```        ProxyPreserveHost关闭     AuthType openid-connect     需要有效用户     ProxyPass <%= @ s3_website%>     ProxyPassReverse <%= @ s3_website%>   

    ProxyPreserveHost关闭     AuthType openid-connect     需要有效用户     ProxyPass <%= @ s3_website%> / assets / $ 1     ProxyPassReverse <%= @ s3_website%> / assets / $ 1   

    ProxyPreserveHost关闭     AuthType openid-connect     需要有效用户     ProxyPass <%= @ s3_website%>     ProxyPassReverse <%= @ s3_website%>    ```

关键部分是:

“ ProxyPreserveHost关闭”-我的S3存储桶名称与代理不同,因此必须为“关闭”。

“ LocationMatch”-必需,以便代理可以匹配并将URL请求映射到S3存储桶位置/对象。