У меня есть Spring Boot REST API, использующий SSL. Бэкэнд использует порт 8443, и я хочу использовать обратный прокси-сервер Apache 2, поэтому я могу использовать доменное имя, например https://www.example.com/api/v1/, вместо https: // локальный: 8443 / api / v1 /.
Вот конфигурация Apache 2:
<VirtualHost *:80>
ServerName example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ProxyPass / http://127.0.0.1:8443/
ProxyPassReverse / http://127.0.0.1:8443/
</VirtualHost>
и вот конфиг SpringBoot:
port: 8443
ssl:
enabled: true
key-store: classpath:identity.jks
key-password: secret
key-store-password: secret
trust-store: classpath:truststore.jks
trust-store-password: secret
client-auth: need
servlet:
context-path: /api/v1
Когда я обращаюсь к URL-адресу https://www.example.com/api/v1/, я получаю следующую ошибку:
Bad Request This combination of host and port requires TLS.
Я использую Apache только в качестве обратного прокси, поэтому входящие запросы к example.com/api/v1 перенаправляются в автономное приложение, работающее на локальный: 8443. Я не думаю, что есть способ настроить это только на SpringBoot.
Если вы думаете, что вам не нужно включать ssl при весенней загрузке, потому что вы настраиваете https через apache. Тогда "мир" получит доступ к example.com/api/v1 через https, и только в localhost ваш api будет доступен без ssl (только apache будет обращаться к 127.0.0.1:8443 без ssl-шифрования)

не знаю хорошо весеннюю загрузку, но есть автономный режим, который не требует apache. Не пытайтесь совместить автономный режим и apache