SSL httpd VirtualHost 子域名到 Tomcat

SSL httpd VirtualHost 子域名到 Tomcat

我在 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/

相关内容