2014-01-26 65 views
0

我已经配置好我的.ebextensions目录来安装SLL文件并配置ssl.conf apache文件。一切工作都很完美,而不是覆盖我的Elastic Beanstalk默认DocumentRootssl.confDocumentRootAWS Beanstalk和Apache VirtualHost SSL定制DocumentRoot

问题:当我访问https://dashboard.mydomain.com它也指向/home而不是/dashboard文件夹。


弹性魔豆默认的DocumentRoot:

enter image description here


目录文件:

home/ -> Accessed by http://www.mydomain.com/ 
    ... 
dashboard/ -> Accessed by https://dashboard.mydomain.com (DocumentRoot isn't working, its also pointing to /home) 
    ... 
framework/ (Secure) 

的ssl.conf:

LoadModule ssl_module modules/mod_ssl.so 
Listen 443 
<VirtualHost *:443> 
    ServerName dashboard.mydomain.com 
    DocumentRoot /var/www/html/dashboard -- NOT WORKING 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    SSLEngine on 
    SSLCertificateChainFile "/etc/httpd/ssl/gd_bundle.crt" 
    SSLCertificateFile "/etc/httpd/ssl/cert.crt" 
    SSLCertificateKeyFile "/etc/httpd/ssl/key.key" 

    ProxyPass/http://localhost:80/ retry=0 
    ProxyPassReverse/http://localhost:80/ 
    ProxyPreserveHost on 

    LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 
    ErrorLog /var/log/httpd/elasticbeanstalk-error_log 
    TransferLog /var/log/httpd/elasticbeanstalk-access_log 
</VirtualHost> 

回答

2

UPDATE 2014 2月08日

我做了一些测试,我发现ProxyPass指令并不能简单地重定向从端口443的每个请求到localhost:80(作为一个很容易想到),但基本上从头开始通过端口80重复向Apache发出请求(至少,这正是我所理解的)。

所以,如果你想设置的任何环境变量,你需要做的是在匹配的虚拟主机,添加到您的.conf是这样的:

Listen 80 
<VirtualHost *:80> 
    DocumentRoot /var/www/html/dashboard 
</VirtualHost> 

这将每一个请求执行(80或443)。

结束时更新

我不知道为什么,但这里有两个建议:在/etc/httpd/conf.d程序的.conf按字母顺序进行处理。 这并不能解释为什么你的配置不接管,因为环境变量设置在aws_env.conf 但是...看看aws_env.conf:你会发现一些提示(它看起来像名称documentRoot的内容有些改变:例如,在我的版本中是PHP_DOCUMENT_ROOT)。 祝你好运,让我们知道你是否知道。