diff --git a/serv_nginx/Makefile b/serv_nginx/Makefile index cb28e97..cd41621 100644 --- a/serv_nginx/Makefile +++ b/serv_nginx/Makefile @@ -62,4 +62,4 @@ start_kk: re_kk: git stop_kk start_kk retart_kk: - docker compose down keycloak && docker compose build keycloak --no-cache && docker compsoe up keycloak -d \ No newline at end of file + docker compose down keycloak && docker compose build keycloak --no-cache && docker compose up keycloak -d \ No newline at end of file diff --git a/serv_nginx/docker-compose.yml b/serv_nginx/docker-compose.yml index d54be1b..3947b3d 100644 --- a/serv_nginx/docker-compose.yml +++ b/serv_nginx/docker-compose.yml @@ -168,18 +168,14 @@ services: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin} KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD:-keycloak} - # Используем только hostname-url с путем /auth - KC_HOSTNAME_URL: https://yalarba.ru/auth + # Убрать KC_HOSTNAME_URL - используем конфиг файл KC_HTTP_ENABLED: true KC_HTTP_RELATIVE_PATH: /auth KC_HOSTNAME_STRICT: true KC_HOSTNAME_STRICT_HTTPS: true - - KC_PROXY: edge - # или - # - KC_PROXY=reencrypt - # или - #- KC_PROXY=passthrough + KC_PROXY: reencrypt + # Оптимизация для прода + JAVA_OPTS: "-Xms512m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true" volumes: - keycloak_data:/opt/keycloak/data networks: diff --git a/serv_nginx/keycloak/Dockerfile b/serv_nginx/keycloak/Dockerfile index 2350251..546ab53 100644 --- a/serv_nginx/keycloak/Dockerfile +++ b/serv_nginx/keycloak/Dockerfile @@ -1,30 +1,27 @@ -FROM quay.io/keycloak/keycloak:22.0.0 as builder +FROM quay.io/keycloak/keycloak:24.0.4 as builder -# Устанавливаем рабочую директорию WORKDIR /opt/keycloak -# Копируем конфигурационный файл -COPY keycloak.conf /opt/keycloak/conf/keycloak.conf +# Включение необходимых фич +RUN /opt/keycloak/bin/kc.sh build --features=token-exchange,admin-fine-grained-authz -# Собираем Keycloak в optimized режиме с PostgreSQL -RUN /opt/keycloak/bin/kc.sh build --db=postgres +FROM quay.io/keycloak/keycloak:24.0.4 -FROM quay.io/keycloak/keycloak:22.0.0 - -# Копируем собранную конфигурацию из builder stage +# Копируем собранный билд COPY --from=builder /opt/keycloak/ /opt/keycloak/ -# Устанавливаем рабочую директорию WORKDIR /opt/keycloak -# Копируем финальный конфигурационный файл -COPY keycloak.conf /opt/keycloak/conf/keycloak.conf - -# Меняем владельца файлов -USER root +# Создаем пользователя для выполнения +RUN groupadd -r keycloak && useradd -r -g keycloak keycloak RUN chown -R keycloak:keycloak /opt/keycloak USER keycloak -# Команда для запуска в optimized режиме -ENTRYPOINT ["/opt/keycloak/bin/kc.sh"] -CMD ["start", "--optimized"] \ No newline at end of file +# Копируем конфигурационный файл +COPY --chown=keycloak:keycloak keycloak.conf /opt/keycloak/conf/ + +# Экспортируем порт +EXPOSE 8080 + +# Команда запуска +ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start", "--optimized"] \ No newline at end of file diff --git a/serv_nginx/keycloak/keycloak.conf b/serv_nginx/keycloak/keycloak.conf index 53ddcdd..74b139d 100644 --- a/serv_nginx/keycloak/keycloak.conf +++ b/serv_nginx/keycloak/keycloak.conf @@ -15,15 +15,15 @@ http-enabled=true http-port=8080 http-relative-path=/auth -# Hostname configuration -hostname-url=https://yalarba.ru/auth +# Hostname configuration - ИСПРАВЛЕНО +hostname=https://yalarba.ru +hostname-path=/auth hostname-strict=true hostname-strict-https=true hostname-strict-backchannel=false -hostname-path=/auth -# Proxy configuration -proxy=x_forwarded +# Proxy configuration - ИСПРАВЛЕНО +proxy=reencrypt proxy-address-forwarding=true # CORS settings @@ -39,4 +39,9 @@ health-enabled=true features=token-exchange,admin-fine-grained-authz # Logging -log-level=INFO \ No newline at end of file +log-level=INFO + +# Дополнительные настройки для прода +cache=local +cache-stack=kubernetes +metrics-enabled=false \ No newline at end of file diff --git a/serv_nginx/nginx/nginx-ssl.conf b/serv_nginx/nginx/nginx-ssl.conf index 5649c8e..22e6a76 100644 --- a/serv_nginx/nginx/nginx-ssl.conf +++ b/serv_nginx/nginx/nginx-ssl.conf @@ -22,7 +22,7 @@ server { location / { return 301 https://$host$request_uri; } - + location /uploads/ { alias /uploads/; expires 1y; @@ -52,19 +52,22 @@ server { # Keycloak integration - исправленная конфигурация location /auth/ { - proxy_pass http://keycloak_backend/auth/; + proxy_pass http://keycloak_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; - + + # Убрать trailing slash в proxy_pass + proxy_pass http://keycloak_backend; + # Важные настройки для Keycloak proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; - + # Таймауты proxy_connect_timeout 30s; proxy_send_timeout 30s;