Настройка обратного прокси-сервера для KeyCloak docker с пользовательским базовым URL

Как я могу установить docker keycloak base url в качестве параметра ?

у меня есть следующая конфигурация обратного прокси-сервера nginx:

server {
    listen 80;
    server_name example.com;

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

когда я пытаюсь получить доступ http://example.com/keycloak/ у меня есть HTTP-перенаправление keycloak на http://example.com/auth/ вместо http://example.com/keycloak/auth/

какие идеи?

1 ответов


просто проверил, что @home, и на самом деле несколько дополнений конфигурации необходимы:

1 / Запустите контейнер keycloak с помощью env -e PROXY_ADDRESS_FORWARDING=true как объясняется в документах, это требуется в прокси-способе доступа к keycloak:

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

также объясняется в этом поэтому вопрос

2/ менять веб-контексте внутри файла конфигурации keycloak $JBOSS_HOME/standalone/configuration/standalone.xml

по умолчанию конфигурация keycloak указывает на auth

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

затем вы можете изменить его на keycloak/auth

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

Если вам нужно автоматизировать это для docker, просто создайте новый образ 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 / добавьте некоторую информацию прокси в конфигурацию 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;, а если не пытаться использовать частную сеть избегайте проксирования через внешние веб-запросы.

надеюсь, что это помогает