Мое приложение wicket работает за конфигурацией прокси-сервера Apache с завершением SSL.
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName my-domain-name
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:49161/
ProxyPassReverse / http://localhost:49161/
SSLCertificateFile /etc/letsencrypt/live/my-domain-name/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my-domain-name/privkey.pem
RequestHeader set X-Forwarded-Proto https
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Используя эту конфигурацию, я могу получить доступ к приложению через https. Так что эта часть работает нормально.
Проблема в том, что я использую в Wicket дополнительные плагины, например, расширение калитки Google Map. Это вставит ссылку на скрипт в html, что приведет к ошибке смешанного содержимого.
Mixed Content: The page at 'https://my-domain-name/' was loaded over HTTPS, but requested an insecure script 'http://maps.google.com/maps/api/js?v=3&sensor=false'. This request has been blocked; the content must be served over HTTPS.
Я предполагаю, что он использует http там, потому что думает, что страница обслуживается через http. По этой причине я добавил часть X-Forwarded-Proto в конфигурацию виртуального хоста, но, похоже, это не сработало.
Я также пытался сообщить tomcat, что схема https используется при обновлении коннектора HTTP в server.xml
<Connector port="8080" protocol="HTTP/1.1" scheme="https" secure="true" SSLEnabled="false"
connectionTimeout="20000"
redirectPort="8443" />
Есть идеи, что я мог бы сделать на уровне приложения Wicket, чтобы сказать, что приложение на самом деле обслуживается через https, а не через http?
Спасибо!
Кристоф.