我在 Tomcat 服务器下有多个应用程序。因此,我希望每个应用程序都有一个子域。因此,如果用户想要访问某个应用程序,则必须输入https://app1.domain.com... 分别访问 Tomcat 应用程序 domain.com/app1/、domain.com/app2/。
我已成功使用通配符证书配置 apache 以使用 SSL。但在访问每个应用程序的子域时不会重定向。只收到 ERR_TOO_MANY_REDIRECTS 错误。
以下是 ssl.conf 文件:
<VirtualHost 10.0.0.1:443>
ServerAdmin [email protected]
DocumentRoot "/var/www/html"
ServerName www.domain.com
ServerAlias domain.com
ErrorLog logs/ssl_error.log
DirectoryIndex index.html
SSLEngine on
SSLProtocol All +TLSv1.2 -SSLv2 -SSLv3
SSLCertificateFile /opt/certs/domain.com.crt
SSLCertificateKeyFile /opt/certs/domain.com.key
SSLCertificateChainFile /opt/certs/domain.com.intermediate.crt
<Directory "/var/www/html">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 10.0.0.1:443>
DocumentRoot "/var/www/html/app1"
ServerName app1.domain.com
UseCanonicalName Off
DirectoryIndex index.html
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/app1/
ProxyPassReverse / http://localhost:8080/app1/
SSLEngine On
SSLProtocol All +TLSv1.2 -SSLv2 -SSLv3
SSLCertificateFile /opt/certs/domain.com.crt
SSLCertificateKeyFile /opt/certs/domain.com.key
SSLCertificateChainFile /opt/certs/domain.com.intermediate.crt
ErrorLog /var/log/httpd/ssl_app1_error.log
LogLevel error
<Directory "/var/www/html/app1">
Order allow,deny
Allow from all
Options None
</Directory>
</VirtualHost>
有什么想法吗?以及如何保持 SSL 在重定向上运行,HTTPS 而不仅仅是 HTTP?
谢谢
答案1
经验法则是始终NameVirtualHost
在每个 之前使用VirtualHost
,除非您知道自己在做什么。每个 SSL 端口(例如 443)的基本模板是:
Listen 443
SSLInsecureRenegotiation off
NameVirtualHost *:443
<VirtualHost *:443>
...
此外,您正确地重定向到http://localhost:8080/app1/