nginx和shiro-redis解决单点登陆的问题

引言:当我们使用nginx做集群,shiro-redis解决session共享的问题的时候,我们是否会遇到其他系统也要经过我们系统登陆才可以使用,这里我们将介绍nginx和shiro-redis(这里的配置就不多说了,直接可以查看上篇文章:解决使用redis进行基于shiro的session集群共享)来实现单点登陆问题,这里我们就以一台服务器来举例

首先我们已经集群部署了我们的项目A在8083和8082这2个端口的tomcat下,nginx配置如下:

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,但是我们需要登陆我们的系统就可以直接使用他们的系统,这个时候的做法如下:

第一步:修改以上配置文件:如红色部分

upstream localhost{  
    server 127.0.0.1:8083;  
    server 127.0.0.1:8082; 
    server 192.168.1.2:8084; 	
 }
第二步:在登陆成功页面放一个超链接地址为http:// 192.168.1.2: 8084 /B,用来链接到B项目,注意, 这里一定要用端口哎访问,千万不能再使用如localhost/B的方式来访问

以上2步就可以实现单点登陆


你可能感兴趣的:(nginx和shiro-redis解决单点登陆的问题)