apache https代理后面的keycloak“ https required”

时间:2019-07-08 21:22:57

标签: apache docker https webserver keycloak

我只是按如下所示设置了一个keycloak docker容器:

docker run --name keycloak --net keycloak-network -e DB_ADDR=mysql -e DB_DATABASE=keycloak -e DB_USER=keycloak -e DB_PASSWORD=mypassword -d -p 8088:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=mypassword -e KEYCLOAK_HOSTNAME="keycloak.example.net" -e PROXY_ADDRESS_FORWARDING=true -e KEYCLOAK_HTTPS_PORT=443 jboss/keycloak

在我的服务器上,我正在运行一个apache2 Web服务器,其中包含以下用于我的网站的配置文件-可用的“ keycloak.example.net”:

<virtualhost keycloak.example.net:80>
    ServerName keycloak.example.net

    Redirect permanent / https://keycloak.example.net/
</virtualhost>

<virtualhost keycloak.example.net:443>
    ServerName keycloak.example.net

    SSLEngine On

    SSLCertificateFile /etc/letsencrypt/live/keycloak.example.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/keycloak.example.net/privkey.pem

    SSLProxyEngine on
    ProxyPreserveHost On

    <location />
        Order allow,deny
        Allow from all
        Require all granted
        ProxyPass http://localhost:8088/
        ProxyPassReverse http://localhost:8088/
    </location>
</virtualhost>

我的apache网络服务器已经正确地将我重定向(强制显示为https)到运行在主机上端口8088上的docker容器上,在docker-containers内部端口8080上。

我访问https://keycloak.example.net/auth时-它试图将我重定向到corret keycloak站点,但随后引发此错误:

HTTPS required

要使其正常运行,我需要更改什么?

enter image description here

1 个答案:

答案 0 :(得分:0)

解决方案

所以我终于可以用这种方式修复我的错误:

  1. keycloak.example.conf目录中编辑我的/etc/apache2/sites-available
...
<virtualhost keycloak.example.net:443>
...
RequestHeader set X-Forwarded-Proto "https"
...
  1. 确保在apache中启用headers模块:a2enmod headers
  2. 重新启动我的Apache服务器:service apache2 restart

结论

因此,看来我只是没有配置apache服务器以必要的方式转发https流量。

我希望我可以为某人提供此解决方案,并为您节省一些时间。非常感谢@Boomer发布了必要的链接,并感谢@Mario支持这个孤独的问题并向我展示了他的解决方案。