Hi everyone,
I’m currently setting up Keycloak 25.0.2 and I need help configuring it with Nginx 1.24. Here are the details of my setup:
- Keycloak version: 25.0.2
- Nginx version: 1.24
- Server OS: Ubuntu 24.04
- Keycloak Docker image: Quay
- Nginx configuration:
I want to configure Nginx as a reverse proxy for Keycloak, ensuring secure access via HTTPS. Below is my current Nginx configuration file:
server {
server_name sso.tld.com;
location / {
proxy_pass http://127.0.0.1:8711;
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-Port $server_port;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/sso.tld.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/sso.tld.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = sso.tld.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name sso.tld.com;
return 404; # managed by Certbot
}
and KC docker conf:
version: “3.7”
services:
keycloak:
image: Quay
entrypoint: /opt/keycloak/bin/kc.sh start
container_name: keycloak
restart: unless-stopped
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=password
- KEYCLOAK_FRONTEND_URL=https://{{ URL }}/auth
- KC_HOSTNAME_STRICT=false
- KC_HOSTNAME_STRICT_HTTPS=false
- KC_HTTP_ENABLED=true
- KC_DB=postgres
- KC_DB_URL=jdbc:postgresql://keycloak-postgres:5432/keycloak
- KC_DB_USERNAME=keycloak
- KC_DB_PASSWORD=password
- proxy=edge
ports:
- 127.0.0.1:8711:8080
depends_on:
keycloak-postgres:
condition: service_healthy
networks:
- keycloak-network
keycloak-postgres:
container_name: keycloak_postgres
image: postgres:latest
restart: unless-stopped
environment:
- POSTGRES_DB=keycloak
- POSTGRES_USER=keycloak
- POSTGRES_PASSWORD=password
- POSTGRES_PORT=5432
healthcheck:
test: [“CMD-SHELL”, “sh -c ‘pg_isready -U keycloak -d keycloak’”] # User, Database
interval: 5s
timeout: 30s
retries: 3
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- keycloak-network
networks:
keycloak-network:
name: keycloak-network
driver: bridge
volumes:
postgres_data:
and the login page like this
thanks in advance