Мой сценарий
У меня есть сервер с IP x.x.x.x
Мое веб-приложение работает на порту 8083 сервера.
Keycloak (развернут с докером) работает на порту 8080 сервера.
Я хочу настроить nginx, чтобы при посещении my-website.com
он перенаправлялся в мое веб-приложение на x.x.x.x:8083
, а при посещении my-website.com/auth
он перенаправлялся на Keycloak на x.x.x.x:8080
. Я также использую SSL для своего сайта.
Вот мой файл nginx ssl.conf
upstream upstream_auth {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
server_name my-website.com www.my-website.com;
return 301 https://my-website.com;
}
server {
listen 443;
ssl on;
server_name my-website.com;
ssl_certificate /etc/ssl/my-website.crt;
ssl_certificate_key /etc/ssl/my-website.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
keepalive_timeout 60;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
root /var/lib/tomcat7/webapps/ROOT/;
client_max_body_size 50M;
location / {
proxy_pass http://127.0.0.1:8083/;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /auth/{
proxy_pass http://upstream_auth;
proxy_http_version 1.1;
proxy_set_header URI_REQUEST_ORIGIN $request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
#proxy_pass_header Set-Cookie;
proxy_set_header Connection **;
proxy_set_header Proxy **;
}
}
Моя проблема:
Когда я захожу на my-website.com/auth
, я перехожу на целевую страницу плаща с ключом (как я и ожидал). Затем я нажимаю на консоль администратора и затем вхожу в Master Realm of Keycloak, браузер, кажется, застрял в бесконечном цикле https://my-website.com/auth/admin/master/console/
и https://my-website.com/auth/admin/master/console/#state={constantly-changing-string}&session_state=xxx&code={another-constantly-changing-string}
.
Я искал решение, и, кажется, есть много причин, которые могут вызвать это.
Что я здесь не так делаю?