如何设置商业版Nginx Sticky Cookie模块保持会话?

Reverse Proxy

1 前言

一个问题,一篇文章,一出故事。
今天遇到Keycloak的需要保持会话问题,于是整理当前章节。

2 最佳实践

2.1 部署环境

2.1.1 修改前的集群配置

如何部署RHBK集群Nginx反向代理?

2.1.2 准备nginx-plus集群

如何配置nginx-plus的HA?

2.2 配置会话保持

2.2.1 创建负载均衡器

vim /etc/nginx/public/upstream_devsso.cmdschool.org_443.conf

创建如下配置,

upstream devsso.cmdschool.org_443 {
  zone devsso.cmdschool.org_443 64m;
  sticky cookie devsso.cmdschool.org_443_cookie expires=8h path=/;
  server dgrhbkdev01.cmdschool.org:8443 max_fails=3 fail_timeout=30s;
  server dgrhbkdev02.cmdschool.org:8443 max_fails=3 fail_timeout=30s;
  server hkrhbkdev01.cmdschool.org:8443 backup;
}

2.2.2 引用负载均衡器

include /etc/nginx/public/upstream_devsso.cmdschool.org_443.conf;

server {
    listen 443 ssl;
    server_name devsso.cmdschool.org;
    include /etc/nginx/public/ssl_default.conf;

    location ~ ^/(js|realms|resources|robots.txt)/ {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_pass       https://devsso.cmdschool.org_443;
        proxy_set_header Host $host:$server_port;
    }

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_pass       https://devsso.cmdschool.org_443;
        proxy_set_header Host $host:$server_port;
    }

}

server {
    listen 80;
    server_name devsso.cmdschool.org;

    return 301 https://devsso.cmdschool.org$request_uri;
}

2.2.3 应用配置

nginx -t
systemctl reload nginx
systemctl status nginx
没有评论

发表回复

Keycloak
如何部署RHBK的Nginx反向代理?

1 基础知识 1.1 代理模式 1.1.1 Edge模式 – 该模式代理与红帽构建的Ke …

Reverse Proxy
如何解决Nginx代理丢失Cookies问题?

1 前言 一个问题,一篇文章,一出故事。 笔者接到任务需要把Tomcat的其中一个应用号使用Ngin …

Nginx
如何解决Nginx代理传大文件不同步问题?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境遇到用户透过反向代理上传大文件提示用户已经完成 …