Încerc să configurez două subdomenii, pt A și b în domeniu.com. Folosesc două fișiere .conf, care arată aproape la fel cu modificările corespunzătoare la ServerName și ProxyPass:
<VirtualHost *:80>
        ServerName a.domain.com #This was added as a try for a fix. 
        Redirect permanent /  https://a.domain.com/
</VirtualHost>
<VirtualHost *:443>
        ServerName a.domain.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/a
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        #SSL stuff
        #Proxies
        ProxyPass        /        https://a.domain.com:8444/
        ProxyPassReverse /        https://a.domain.com:8444/
        ProxyPass        /a/      https://a.domain.com:8444/
        ProxyPassReverse /a/      https://a.domain.com:8444/
        ProxyPass        /b/      https://b.domain.com:8445/
        ProxyPassReverse /b/      https://b.domain.com:8445/
</VirtualHost>
Acest lucru se face în mediul meu de testare, replicând ceva similar cu ceea ce este în prezent în producție. În /etc/hosts, am adăugat a.domain.com și b.domain.com până la 127.0.0.1. DNS-ul în producție are înregistrări pentru ce a.domain.com și b.domain.com are, care este același IP (am făcut asta și în mașina de la care testez asta).
De asemenea, rețineți că nu difuzez conținut din directoarele lor rădăcină. Am adăugat că încercând să rezolv problema menționată în titlu. Există totuși un html simplu în ambele directoare.
Care este problema reală?
Pur și simplu, când încerci a.domain.com, rezultatul este aplicația web de la localhost:8444, cum era de așteptat. Când încerci b.domain.com, rezultatul este de asemenea localhost:8444, în loc de localhost:8445. Ambii a.conf și b.conf sunt activate, iar dacă dezactivez a.conf, atunci primesc corect localhost:8445. Daca incerc si eu like a.domain.com/b, redirecționarea se rezolvă înapoi la a.domain.com.
Am citit mai multe întrebări și tutoriale, iar majoritatea dintre ele fie au ceva care funcționează ca în configurația mea, fie adaugă NameVirtualHost, care înțeleg că nu este necesar pentru versiunea mea de Apache.Am adăugat, de asemenea, un ServerName în portul 80, deoarece am crezut că poate cererea pentru b a fost egalat de a.conf deoarece sunt același IP, dar nici asta nu a funcționat.
Ce îmi lipsește aici? Este ceva cu mod_proxy pe care se pare că îl ignor? Dacă este posibil, aș dori să păstrez un fișier pentru fiecare aplicație web. Mulțumiri!
Aceasta este pe Ubuntu 18.04.2, Apache 2.4 (mod_proxy și mod_ssl), Tomcat 9. Orice alte informații doriți, voi încerca să le livrez.
ACTUALIZAȚI
Am incercat si cu aceasta configuratie. Același rezultat nedorit.
<VirtualHost *:80>
        ServerAlias a.domain.com
        Redirect permanent /  https://a.domain.com/
</VirtualHost>
<VirtualHost *:443>
        ServerName a.domain.com
        ServerAdmin webmaster@localhost
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        #SSL stuff
        #Proxies
        Redirect /b https://b.domain.com
        <Location />
                ProxyPass               https://localhost:8444/
                ProxyPassReverse        https://localhost:8444/
        </Location>
        <Location /a>
                ProxyPass               https://localhost:8444/
                ProxyPassReverse        https://localhost:8444/
        </Location>
</VirtualHost>
ACTUALIZAȚI
Ok, tocmai am găsit ceva foarte enervant. Dacă intru cu browserul meu la oricare a.domain.com sau b.domain.com, amândoi se hotărăsc să a.domain.com. Aceasta este problema pe care am descris-o inițial. DAR daca incerci https://a.domain.com sau https://b.domain.com, ambele rezolvă la serverul potrivit: A la 8444 și b la 8445.
Deoarece este foarte frustrant, voi lua o frână și voi analiza asta peste un timp.
ACTUALIZAȚI
După o frână lungă, am încercat alte modificări aleatorii doar pentru a vedea ce s-a întâmplat și, din nou, nimic nu a funcționat conform așteptărilor, cu excepția utilizării HTTPS. Am instalat Postman pentru a vedea ce se trimite în cerere și am aflat că în Postman, atât HTTP, cât și HTTPS folosesc gazda corect. Și mai bine/mai rău: răspunsul real arată diferitele pagini de bun venit pentru a.domain.com și b.domain.com, ceea ce înseamnă că configurațiile mele funcționează corect când folosesc Postman.
Cred că toată această încercare ar putea fi doar o problemă de cache, dar browserul meu de testare ales (dev. Firefox) este setat să nu memoreze în cache. Voi verifica răspunsurile cu curl și cu celelalte browsere ale mele.