引言:當咱們使用nginx作集羣,shiro-redis解決session共享的問題的時候,咱們是否會遇到其餘系統也要通過咱們系統登錄才能夠使用,這裏咱們將介紹nginx和shiro-redis(這裏的配置就很少說了,直接能夠查看上篇文章:解決使用redis進行基於shiro的session集羣共享)來實現單點登錄問題,這裏咱們就以一臺服務器來舉例css
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個端口下任意的接口。html
可是如今,有另一個公司的項目B部署在另一臺服務器如:192.168.1.2上,端口爲8084,可是咱們須要登錄咱們的系統就能夠直接使用他們的系統,這個時候的作法以下:nginx
第一步:修改以上配置文件:如紅色部分redis
<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的方式來訪問api
以上2步就能夠實現單點登錄跨域