ApacheHTTPS代理背后的密钥斗篷”;“需要https”;

ApacheHTTPS代理背后的密钥斗篷”;“需要https”;,apache,docker,https,webserver,keycloak,Apache,Docker,Https,Webserver,Keycloak,我刚刚设置了一个KeyClope 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 KEYCLOA

我刚刚设置了一个KeyClope 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服务器正在运行,我的站点的以下配置文件为“keydeport.example.net”:

我必须改变什么才能让它工作

解决方案 因此,我最终可以通过以下方式修复我的错误:

  • /etc/apache2/sites available
    目录中编辑我的
    keydape.example.conf
  • 。。。
    ...
    RequestHeader集合X-Forwarded-Proto“https”
    ...
    
  • 确保在apache中启用
    headers
    模块:
    a2enmod headers
  • 重新启动我的apache服务器:
    service apache2 Restart
  • 结论 因此,我似乎没有配置我的apache服务器,以便以必要的方式转发https流量

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

    Solution 因此,我最终可以通过以下方式修复我的错误:

  • /etc/apache2/sites available
    目录中编辑我的
    keydape.example.conf
  • 。。。
    ...
    RequestHeader集合X-Forwarded-Proto“https”
    ...
    
  • 确保在apache中启用
    headers
    模块:
    a2enmod headers
  • 重新启动我的apache服务器:
    service apache2 Restart
  • 结论 因此,我似乎没有配置我的apache服务器,以便以必要的方式转发https流量


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

    我今天突然发现了这个错误。我很困惑,因为我已经很长时间使用相同的配置和KeyClope映像了。也许有时间依赖性在起作用?我的设置完全是源代码控制的,所以我仍然不明白它为什么会坏。尽管如此,为了防止它对其他人有帮助:我将
    领域的
    sslRequired
    设置从
    external
    更改为
    none
    。我还没有弄明白为什么以前
    外部
    工作。@Mario你的设置是什么?您是运行容器还是从源代码构建?您看过这个答案吗?似乎这是一个非常类似的案例。@Waldemarens在生产中,我们在Kubernetes上运行,但所讨论的设置是用于本地开发的。我们正在运行
    jboss/keydape
    docker映像。docker映像支持迁移,因此我们使用JSON配置文件来设置领域,并使用一些脚本来启用服务帐户。我很困惑,因为我已经很长时间使用相同的配置和KeyClope映像了。也许有时间依赖性在起作用?我的设置完全是源代码控制的,所以我仍然不明白它为什么会坏。尽管如此,为了防止它对其他人有帮助:我将
    领域的
    sslRequired
    设置从
    external
    更改为
    none
    。我还没有弄明白为什么以前
    外部
    工作。@Mario你的设置是什么?您是运行容器还是从源代码构建?您看过这个答案吗?似乎这是一个非常类似的案例。@Waldemarens在生产中,我们在Kubernetes上运行,但所讨论的设置是用于本地开发的。我们正在运行
    jboss/keydape
    docker映像。docker映像支持迁移,因此我们使用JSON配置文件来设置领域,并使用一些脚本来启用服务帐户。
    <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>
    
    HTTPS required
    
    ...
    <virtualhost keycloak.example.net:443>
    ...
    RequestHeader set X-Forwarded-Proto "https"
    ...