首先,如果这个问题问得愚蠢,我深表歉意——我对这个东西很陌生,非常非常困惑。我找不到解决我问题的现有帖子。
我正在尝试将 SSL URL 反向代理到 Tomcat 应用程序。使用 http 时,下面显示的配置可以正常工作。在 https 下则不行。我想要实现的是 https --> Apache2.2 - http -> Tomcat6
它是一个虚拟域,我似乎必须配置 Apache 的唯一选项仅限于拉入 httpd.conf 的包含文件(如下)。
目录部分是默认的,之后的内容是我添加的。
<Directory /var/www/vhosts/<domain>/httpdocs/>
php_admin_value open_basedir "/var/www/vhosts/<domain>/httpdocs:/tmp:/:.:../../:../../../:.."
</Directory>
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
LoadFile /usr/lib/libxml2.so.2.7.6
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
SSLProxyEngine on
ProxyPass /app1/ ajp<link removed 127.0.0.1:8009/app1/>
ProxyPass /app2/ ajp<link removed 127.0.0.1:8009/app2/>
ProxyPassReverse /app1 ajp<link removed 127.0.0.1:8009/app1/>
ProxyPassReverse /app2/ ajp<link removed 127.0.0.1:8009/app2/>
访问http://mydomain.com/app1/login/do/等等工作正常。https://mydomain.com/app1/login/do/产生 404 错误。服务器日志指出 /var/www/vhosts//app1 不存在。
我不明白为什么配置试图定位这个文件,而不是指向 Tomcat 应用程序。
这件事有点紧急,所以非常欢迎任何建议。
干杯,乔治
答案1
似乎您的代理配置不符合 SSL 侦听器的上下文;您希望遇到 ProxyPass 并且仅此而已,但是,它却试图为 SSL 侦听器提供 DocumentRoot 下的文档(似乎是/var/www/vhosts//
)。
解决方法应该是将这些ProxyPass(Reverse)
行添加到 443 VirtualHost。但是,为了验证到底发生了什么,我们需要更多的配置 - 听起来像是一个共享托管环境,所以您可能无法获得此信息,但很有可能这是由于配置不适用于 443 VirtualHost 造成的问题。
如果您的包含文件(特别是 VirtualHost 块)中还有更多配置,或者对包含该文件的文件有任何访问权限,那么应该很容易修复。否则,您可能会被困在纠缠某人将文件包含在您的端口 443 配置中,就像他们在您的端口 80 配置中包含文件一样。