引言:当我们使用nginx做集群,shiro-redis解决session共享的问题的时候,我们是否会遇到其他系统也要经过我们系统登陆才可以使用,这里我们将介绍nginx和shiro-redis(这里的配置就不多说了,直接可以查看上篇文章:解决使用redis进行基于shiro的session集群共享)来实现单点登陆问题,这里我们就以一台服务器来举例
upstream localhost{ server 127.0.0.1:8083; server 127.0.0.1:8082; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://localhost; client_max_body_size 100m; } #缓存相应的文件(静态文件) location ~ .*\.(jsp|gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) { proxy_pass http://localhost; proxy_redirect off; proxy_set_header Host $host; proxy_cache cache_one; proxy_cache_valid 200 302 1h; proxy_cache_valid 301 1d; proxy_cache_valid any 1m; expires 30d; } location /apis { #添加访问目录为/apis的代理配置,解决警民互动外网跨域问题 rewrite ^/apis/(.*)$ /$1 break; proxy_pass http://localhost; } }
以上配置,我们只要访问localhost/A就能进入到登陆界面,登陆进去就可以访问2个端口下任意的接口。
但是现在,有另外一个公司的项目B部署在另外一台服务器如:192.168.1.2上,端口为8084,但是我们需要登陆我们的系统就可以直接使用他们的系统,这个时候的做法如下:
第一步:修改以上配置文件:如红色部分
<span style="color: rgb(79, 79, 79);">upstream localhost{ server 127.0.0.1:8083; server 127.0.0.1:8082; </span><span style="color:#ff0000;">server 192.168.1.2:8084;</span> }
第二步:在登陆成功页面放一个超链接地址为http://192.168.1.2:8084/B,用来链接到B项目,注意,这里一定要用端口哎访问,千万不能再使用如localhost/B的方式来访问
以上2步就可以实现单点登陆