Estou trabalhando em nosso servidor Debian X64, que é o ponto de extremidade de 5 nomes de domínio. Um dos nomes de domínio é utilizado por um projeto da Web executado no servidor da Web Apache. Os 4 domínios restantes têm aplicativos da Web individuais em execução em uma única instância do Apache Tomcat. Atualmente, estou usando mod_proxy
para redirecionar solicitações para aplicativos da Web apropriados.
Infelizmente, essa configuração se torna inútil assim que o HTTPS entra em cena. Não consigo instalar um único certificado https que tenha todos os domínios nele. Tal certificado é fornecido por LetsEncrypt .
Após a instalação do certificado, qualquer pedido será redirecionado apenas para um único domínio do Tomcat. No começo, não consegui entender esse comportamento, mas depois de verificar o certificado, vi que o domínio para o qual ele estava redirecionando era o primeiro dos vários domínios no certificado. Não sei por que o URL não é processado, mas esse é o comportamento atual. Eu estava pensando em usar mod_jk
em vez de mod_proxy
para essa tarefa, mas não sei se é exatamente isso que eu preciso.
Gostaria de saber como criar uma configuração, onde posso instalar certificados SSL individuais para cada domínio. Veja uma visão geral básica de como a configuração está atualmente:
Apache2workers.properties:
worker.list=worker_app1worker.worker_app1.type=lbworker.worker_app1.balance_workers=app1_instance1worker.worker_app1.sticky_session=trueworker.worker_app1.sticky_session_force=falseworker.worker_app1.method=busynessworker.app1_instance1.type=ajp13worker.app1_instance1.host=127.0.0.1worker.app1_instance1.port=8010worker.app1_instance1.host=localhostworker.app1_instance1.lbfactor=1worker.app1_instance1.socket_timeout=40worker.app1_instance1.socket_keepalive=trueworker.app1_instance1.reply_timeout=30000
Apachehabilitadoparasites/000-default:
<VirtualHost*:80>ServerAdminwebmaster@localhostServerNamewww.domain4.de.comServerAliasdomain4.de.comDocumentRoot/var/www<Directory/>OptionsFollowSymLinksAllowOverrideNone</Directory><Directory/var/www/>OptionsIndexesFollowSymLinksMultiViewsAllowOverrideAllOrderallow,denyallowfromall</Directory>ScriptAlias/cgi-bin//usr/lib/cgi-bin/<Directory"/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Listen 443
<VirtualHost *:443>
ServerName www.domain1.de
ServerAlias domain1.de
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.domain1.de/tool.crt
SSLCertificateKeyFile /etc/letsencrypt/live/www.domain1.de/private.key
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#ErrorDocument 503 /maintenance.html
# ErrorDocument 404 /maintenance.html
# ErrorDocument 500 /maintenance.html
#ProxyPass /maintenance.html !
#ProxyPass / http://localhost:8080/
#ProxyPassReverse / http://localhost:8080/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain3.de
ServerAlias domain3.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#ErrorDocument 503 /maintenance.html
# ErrorDocument 404 /maintenance.html
# ErrorDocument 500 /maintenance.html
#ProxyPass /maintenance.html !
#ProxyPass / http://localhost:8080/
#ProxyPassReverse / http://localhost:8080/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain3.de
ServerAlias domain3.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain2.de
ServerAlias domain2.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain5.de
ServerAlias domain5.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Se houver qualquer outra informação necessária, por favor me avise. Obrigado pelo seu tempo.
Editar
Eu reimplantei todas as aplicações web para trabalhar com https, especificando na configuração de segurança do Spring. E eu tentei a configuração abaixo. por favor note para cada VirtualHost eu também tentei ProxyPass com localhost: 8080. Atualmente, apenas o aplicativo do servidor da Web é carregado, nada mais.
Alterei o padrão 000 da seguinte forma:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.domain4.de.com
ServerAlias domain4.de.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Listen 443
<VirtualHost *:443>
ServerName www.domain1.de
ServerAlias domain1.de
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.domain1.de/tool.crt
SSLCertificateKeyFile /etc/letsencrypt/live/www.domain1.de/private.key
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#ErrorDocument 503 /maintenance.html
# ErrorDocument 404 /maintenance.html
# ErrorDocument 500 /maintenance.html
#ProxyPass /maintenance.html !
#ProxyPass / http://localhost:8443/
#ProxyPassReverse / http://localhost:8443/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain3.de
ServerAlias domain3.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#ErrorDocument 503 /maintenance.html
# ErrorDocument 404 /maintenance.html
# ErrorDocument 500 /maintenance.html
#ProxyPass /maintenance.html !
#ProxyPass / http://localhost:8443/
#ProxyPassReverse / http://localhost:8443/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain3.de
ServerAlias domain3.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8443/
ProxyPassReverse / http://localhost:8443/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain2.de
ServerAlias domain2.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8443/
ProxyPassReverse / http://localhost:8443/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain5.de
ServerAlias domain5.de
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
ErrorDocument 500 /maintenance.html
ProxyPass /maintenance.html !
ProxyPass / http://localhost:8443/
ProxyPassReverse / http://localhost:8443/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>