docker keycloak base url
をパラメーターとして設定するにはどうすればよいですか?
次のnginxリバースプロキシ設定があります:
server {
listen 80;
server_name example.com;
location /keycloak {
proxy_pass http://example.com:8087/;
}
}
http://example.com/keycloak/ にアクセスしようとすると、keycloak httpリダイレクトが http://example.com/auth/ ではなく- http://example.com/keycloak/auth/
何か案は?
@homeをテストしただけで、実際には複数の構成の追加が必要です。
1/docsで説明されているように、env-e PROXY_ADDRESS_FORWARDING=true
でkeycloakコンテナを実行します。これはプロキシで必要ですキークロークにアクセスする方法:
docker run -it --rm -p 8087:8080 --name keycloak -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak:latest
これも説明します SO question
2/keycloakの構成ファイル内のweb-contextを変更します$JBOSS_HOME/standalone/configuration/standalone.xml
デフォルトのキークローク設定はauth
を指します
<web-context>auth</web-context>
その後、keycloak/auth
に変更できます
<web-context>keycloak/auth</web-context>
Dockerでこれを自動化する必要がある場合は、新しいキークロークイメージを作成するだけです。
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/nginx設定にプロキシ情報を追加します(主にhttp/https処理用)
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;
}
同じサーバーでnginxからkeycloakにリクエストをプロキシする場合は、proxy_pass http://localhost:8087;
を使用することをお勧めします。外部ネットワークリクエストを介したプロキシを回避するためにプライベートネットワークを使用しない場合。
お役に立てれば
@Francois Maturelの応答に基づいて:最新のKeycloak(現在4.8.x)では、web-context
のstandalone-ha.xml
も置き換えるために追加の行を追加する必要がありました。
FROM jboss/keycloak:latest
USER jboss
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
その理由は、docker-entrypoint.sh
フラグが渡されない限り、standalone-ha.xml
起動スクリプトはstandalone.xml
に加えて-c
構成を使用するためです。こちらをご覧ください: https://github.com/jboss-dockerfiles/keycloak/blob/master/server/tools/docker-entrypoint.sh
「/ keycloak」から「/ keycloak/auth」へのやり直しが機能していません。 index.htmlおよびBase-URLのRedirektルートに「/ 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
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml
RUN sed -i -e 's/name="\/"/name="\/keycloak\/"/' $JBOSS_HOME/standalone/configuration/standalone.xml
RUN sed -i -e 's/name="\/"/name="\/keycloak\/"/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml
RUN sed -i -e 's/\/auth/\/keycloak\/auth"/' $JBOSS_HOME/welcome-content/index.html