Am probleme la configurare apache
.
Aplicatii:
aplicația 1 - SPA (frontend), care rulează în docker. Accesibil local de către http://localhost:91
aplicația 2 - WebAPI (serviciu backend), care rulează în docker. Accesibil local de către http://localhost:90
Aș dori să fac ambele aplicații disponibile pe același domeniu prin HTTPS folosind apache
:
- aplicație 1:
https://my.domain.com
<- ar trebui să fie securizat cu autentificare de bază.
- aplicația 2:
https://my.domain.com/api
Am crezut că această configurare funcționează când am folosit HTTP simplu pentru a accesa recursurile, dar odată ce am trecut la HTTPS (autosemnat
cu letsencrypt
) - totul pare să fi încetat să funcționeze.
aici este cea mai recentă configurație
<VirtualHost *:80>
ServerName my.domain.com
ServerAlias www.my.domain.com
TraceEnable off
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.my.domain.com [OR]
RewriteCond %{SERVER_NAME} =my.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName my.domain.com
ServerAlias www.my.domain.com
TraceEnable off
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
#Allow from all
Allow from 127.0.0.1
</Proxy>
Timeout 2400
ProxyTimeout 2400
ProxyBadHeader Ignore
<Location />
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
ProxyPass http://localhost:91/ Keepalive=On
ProxyPassReverse http://localhost:91/
</Location>
<Location /api>
ProxyPass http://localhost:90/
ProxyPassReverse http://localhost:90/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/my.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.com/privkey.pem
</VirtualHost>
</IfModule>
Cea mai recentă și actuală problemă este:
Ori de câte ori încerc să accesez punctul final https://my.domain.com/api/Auth/Login
- utilizatorului i se solicită pagina de autentificare. Acest lucru ar trebui să fie valabil numai pentru adresele URL care nu sunt API.
Cu alte cuvinte - <Location /api>
directiva pare a fi ignorată.Am încercat să amestec directivele de locație, precum și alte zeci de soluții și niciuna dintre ele nu funcționează.. Am încercat și directive mai explicite, cum ar fi <LocationMatch /(api).*>
și asta nu a funcționat.
Este ceva în neregulă cu regulile de potrivire a locației?