Tôi đang gặp sự cố khi thiết lập apache
.
Các ứng dụng:
ứng dụng 1 - SPA (giao diện người dùng), chạy trong docker. Có thể truy cập cục bộ bởi http://localhost:91
ứng dụng 2 - WebAPI (dịch vụ phụ trợ), chạy trong docker. Có thể truy cập cục bộ bởi http://localhost:90
Tôi muốn cung cấp cả hai ứng dụng trên cùng một miền thông qua HTTPS bằng cách sử dụng apache
:
- ứng dụng 1:
https://my.domain.com
<- phải được bảo mật với auth cơ bản.
- ứng dụng 2:
https://my.domain.com/api
Tôi nghĩ rằng thiết lập này của tôi đã hoạt động khi tôi sử dụng HTTP đơn giản để truy cập các nguồn truy cập, nhưng sau khi tôi chuyển sang HTTPS (tự ký
với cho phép mã hóa
) - mọi thứ dường như đã ngừng hoạt động.
đây là cấu hình mới nhất
<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>
Vấn đề mới nhất và hiện tại là:
Bất cứ khi nào tôi cố gắng truy cập điểm cuối https://my.domain.com/api/Auth/Login
- người dùng được nhắc với trang đăng nhập. Điều này chỉ nên hợp lệ cho các url không phải api.
Nói cách khác - <Location /api>
chỉ thị dường như bị bỏ qua.Tôi đã thử xáo trộn các chỉ thị vị trí xung quanh cũng như hàng tá giải pháp khác và không giải pháp nào trong số đó hoạt động.. Tôi cũng đã thử chỉ thị rõ ràng hơn như <LocationMatch /(api).*>
điều đó cũng không hoạt động.
Có điều gì sai với quy tắc so khớp vị trí không?