天天看點

keycloak~nginx實作的https轉發

keycloak我們都以docker為例子,來講一下https的部署。

  • https更安全,加密傳輸
  • kc有些cookies,需要https的支援

nginx部署

upstream keycloak {
    server 192.168.*.*:8080;
}

server {
     server_name kc.lind.com;
     listen 443 ssl;
     ssl_certificate /usr/local/nginx/tls.crt;
     ssl_certificate_key /usr/local/nginx/tls.key;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;

     location /{
     return 301 https://$server_name/auth;
     }

    location /auth {
      proxy_pass http://keycloak/auth;

      proxy_set_header Host $server_name;  
      proxy_set_header X-Forwarded-Proto  $scheme; #決定了keycloak.js檔案是走https,這個比較特殊
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      }

}
      

kc的docker部署

PROXY_ADDRESS_FORWARDING它的最終作用:
  1. 在負責在https請求轉發到http時,keycloak所有資源(包括keycloak.js)都會改寫成https協定,一般我們不
  2. 在服務端可以傳回真實的用戶端IP位址
  • docker代碼
docker run --name keycloak -d -p 8080:8080   \
-e KEYCLOAK_USER=admin \
-e KEYCLOAK_PASSWORD=admin \
-e DB_VENDOR=MYSQL \
-e DB_ADDR=192.168.4.26 \
-e DB_DATABASE=keycloak \
-e DB_USER=*** \
-e DB_PASSWORD=*** \
-e JDBC_PARAMS='useSSL=false' \
-e TZ=Asia/Shanghai \
-e LANG=zh_CN.GB2312 \
-e PROXY_ADDRESS_FORWARDING=true \ #接收反向代碼的Forwarded-For
-e KAFKA_HOST=192.168.4.26:9092 \
-v /etc/localtime:/etc/localtime \
--privileged=true \
--restart=always \
keycloak/phone
      

通過nginx的https通路keycloak

https://localhost/auth,它将會代理到localhost:8080這個端口上。
      
keycloak~nginx實作的https轉發

作者:倉儲大叔,張占嶺,

繼續閱讀