使用基本身份验证的 S3 和 apache mod_proxy

S3 and apache mod_proxy with basic authentication

我想通过 apache mod_proxy 对我的一些文件(apk 文件)进行基本身份验证,重定向到我在 SSL 中的 S3 存储桶。 SSL 和 mod_proxy 完美工作,但基本身份验证被忽略。

<VirtualHost *:443>
        ServerName resources.mydomain.jp

        <FilesMatch "\.apk$">
          Order deny,allow
          SetEnvIf User-Agent ".*Android.*" allow_ag
          Options FollowSymLinks
          Allow from env=allow_ag
          Deny from all
          AuthType Basic
          AuthName "Secret Zone"
          AuthUserFile /etc/httpd/.htpasswd
          Require user xxx_customer
        </FilesMatch>


        SSLEngine on
        SSLProxyEngine on
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
        SSLCertificateFile conf.d/xxx.cer
        SSLCertificateKeyFile conf.d/xxx.key
        SSLCACertificateFile conf.d/xxx.cer

        ProxyPass / http://resources.mydomain.jp.s3-website-ap-zone-1.amazonaws.com/
        ProxyPassReverse / http://resources.mydomain.jp.s3-website-ap-zone-1.amazonaws.com/

    </VirtualHost>

顺便说一下,同样的 "FileMatch" 用于另一个 VirtualHost 并正常工作....

apache 信息:

$ httpd -v
Server version: Apache/2.4.12 (Amazon)
Server built:   Mar 18 2015 20:24:15

谢谢

仅匹配物理文件系统中的文件,而不是您可能认为是文件名的 URL 的最后一个组成部分。由于您正在代理,因此没有 URL 映射到文件系统。

试试

需要更多清理工作:

  • 明确设置"Satisfy Any"
  • 将 "Order deny,allow" 更改为 "Order allow,deny" (这意味着默认拒绝)
  • 删除 "Deny"(不再需要,简化了 Allow from env=... 的订购问题)