ฉันมีปัญหาในการตั้งค่า อาปาเช่
.
การใช้งาน:
ฉันต้องการทำให้ทั้งสองแอปพลิเคชันใช้งานได้ในโดเมนเดียวกันผ่าน HTTPS โดยใช้ อาปาเช่
:
- ใบสมัคร 1:
https://my.domain.com
<- ควรได้รับการรักษาความปลอดภัยด้วยการตรวจสอบสิทธิ์ขั้นพื้นฐาน.
- ใบสมัคร 2:
https://my.domain.com/api
ฉันคิดว่าการตั้งค่านี้ใช้งานได้เมื่อฉันใช้ HTTP ธรรมดาเพื่อเข้าถึงการขอความช่วยเหลือ แต่เมื่อฉันเปลี่ยนเป็น HTTPS (ลงนามด้วยตนเอง
กับ ให้เข้ารหัส
) - ทุกอย่างดูเหมือนจะหยุดทำงาน
นี่คือการกำหนดค่าล่าสุด
<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>
ปัญหาล่าสุดและปัจจุบันคือ:
เมื่อใดก็ตามที่ฉันพยายามเข้าถึงปลายทาง https://my.domain.com/api/Auth/เข้าสู่ระบบ
- ผู้ใช้ได้รับแจ้งด้วยหน้าเข้าสู่ระบบ สิ่งนี้ควรใช้ได้กับ URL ที่ไม่ใช่ API เท่านั้น
กล่าวอีกนัยหนึ่ง - <Location /api>
ดูเหมือนว่าคำสั่งจะถูกละเว้นฉันได้ลองสับเปลี่ยนคำสั่งตำแหน่งและวิธีแก้ไขปัญหาอื่น ๆ หลายสิบวิธีแล้ว แต่ก็ไม่ได้ผล .. ฉันยังลองใช้คำสั่งที่ชัดเจนมากขึ้นเช่น <LocationMatch /(api).*>
ที่ยังใช้งานไม่ได้
มีบางอย่างผิดปกติกับกฎการจับคู่ตำแหน่งหรือไม่