2017-06-19 2 views
7

Comment puis-je régler le docker keycloak base url en tant que paramètre?reverse-proxy pour Keycloak docker avec l'URL de base personnalisée

Je les nginx suivantes inverse configuration proxy:

server { 
    listen 80; 
    server_name example.com; 

    location /keycloak { 
     proxy_pass http://example.com:8087/; 
    } 
} 

Lorsque je tente d'accéder http://example.com/keycloak/ Je suis un keycloak http redirigent vers http://example.com/auth/ au lieu de http://example.com/keycloak/auth/

Toutes les idées?

+0

suggestion FrancoisMaturel: 'lieu/keycloak {proxy_pass http://example.com:8087/keycloak;}' @ FrançoisMaturel J'ai essayé ce que vous suggérez, mais cela n'a pas fonctionné –

Répondre

4

Juste testé que @Home, et en fait plusieurs ajouts de configuration sont nécessaires:

1/Exécuter le conteneur keycloak avec env -e PROXY_ADDRESS_FORWARDING=true comme expliqué dans la documentation, il est nécessaire d'une manière proxy d'accéder à keycloak :

docker run -it --rm -p 8087:8080 --name keycloak -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak:latest 

a également expliqué dans ce SO question

2/Modifier la web contexte à l'intérieur du fichier de configuration de keycloak $JBOSS_HOME/standalone/configuration/standalone.xml

points de configuration par défaut keycloak à auth

<web-context>auth</web-context> 

Ensuite, vous pouvez changer à keycloak/auth

<web-context>keycloak/auth</web-context> 

Si vous avez besoin d'automatiser cela pour docker, il suffit de créer une nouvelle l'image keycloak:

FROM jboss/keycloak:latest 

USER jboss 

RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone.xml 

3/Ajouter des informations proxy à nginx configuration (principalement pour http/https manipulation)

location /keycloak { 
    proxy_pass http://example.com:8087; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

Si vous mandatement demandes de nginx à keycloak sur le même serveur, je recommande d'utiliser proxy_pass http://localhost:8087;, et si essayez de ne pas utiliser un réseau privé pour éviter de passer par des requêtes Web externes.

Hope this helps