Estou executando o Apache 2.4.54 no Debian Bullseye e tenho 42 VHOSTs configurados. A maioria deles são subdomínios xxx.my.domain.com do nosso domínio principal, digamos my.domain.com. Um cliente tem um domínio especial. Há também um VHOST padrão para capturar todas as solicitações. Todos os VHOSTS residem em arquivos numerados, o padrão vem por último.
- HTTP -> HTTPS
- subdomínio não pega antes -> ErrorDocument
- sem subdomínio -> errorDocument
No caso de eu apenas inserir https://my.domain.com , essa solicitação é capturada por um dos vhosts anteriores e não pelo VHOST padrão. Não entendo porque isso acontece.
Sem SSL, a solicitação é respondida por 99-default.conf
99-default.conf
<VirtualHost _default_:80>
ServerName my.domain.com
Redirect permanent / https://my.domain.com
ErrorLog ${APACHE_LOG_DIR}/default_error.log
CustomLog ${APACHE_LOG_DIR}/default_access.log vhost_combined
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.my.domain.com
Redirect 404 /
DocumentRoot /var/www/html/
ErrorDocument 404 "Subdomain does not exist"
ErrorLog ${APACHE_LOG_DIR}/default_error.log
CustomLog ${APACHE_LOG_DIR}/default_access.log combined
</VirtualHost>
# match requests without subdomain
<VirtualHost _default_:443>
ServerName my.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Redirect 404 /
ErrorDocument 404 "Please choose subdomain"
ErrorLog ${APACHE_LOG_DIR}/default_error.log
CustomLog ${APACHE_LOG_DIR}/default_access.log combined
</VirtualHost>
# match any subdomain that does not exist (that's why order is important)
<VirtualHost *:443>
ServerAlias *.my.domain.com
Redirect 404 /
DocumentRoot /var/www/html/
ErrorDocument 404 "Subdomain does not exist"
ErrorLog ${APACHE_LOG_DIR}/default_error.log
CustomLog ${APACHE_LOG_DIR}/default_access.log combined
</VirtualHost>
02-app-customer.conf
<VirtualHost *:443>
Protocols h2 http/1.1
ServerAlias customers-domain.com
# ServerAlias customer.my.domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/wildcard.crt
SSLCertificateKeyFile /etc/ssl/private/wildcard.key
SSLCertificateChainFile /etc/ssl/certs/wildcard_chain.crt
ErrorLog ${APACHE_LOG_DIR}/app_error.log
CustomLog ${APACHE_LOG_DIR}/app_access.log vhost_combined
Include conf.d/security.conf
Include /usr/local/app/local/customer/httpd.conf
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:unix:/run/php/php7.4-fpm-app.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
# Redirection from port 80 to 443 if ssl enabled
<VirtualHost *:80>
ServerName customers-domain.com
# ServerAlias customer.my.domain.com
Redirect permanent / https://www.customers-domain.com/
ErrorLog ${APACHE_LOG_DIR}/app_error.log
CustomLog ${APACHE_LOG_DIR}/app_access.log vhost_combined
</VirtualHost>
# Redirect of www.customers-domain.com to customers-domain.com
<VirtualHost *:443>
Protocols h2 http/1.1
ServerName www.customers-domain.com
ServerAlias www.customers-domain.biz
SSLEngine on
SSLCertificateFile /etc/ssl/certs/wildcard.crt
SSLCertificateKeyFile /etc/ssl/private/wildcard.key
SSLCertificateChainFile /etc/ssl/certs/wildcard_chain.crt
ErrorLog ${APACHE_LOG_DIR}/app_error.log
CustomLog ${APACHE_LOG_DIR}/app_access.log vhost_combined
Redirect permanent / https://customers-domain.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.customers-domain.com
ServerAlias www.customers-domain.biz
Redirect permanent / https://customers-domain.com/
ErrorLog ${APACHE_LOG_DIR}/app_error.log
CustomLog ${APACHE_LOG_DIR}/app_access.log vhost_combined
</VirtualHost>
Não entendo porque uma solicitação para https://my.domain.com é capturada por 02-app-customer.conf e não por 99-default.conf. Alguma ideia?