• nginx代理springboot前后端分离服务--接入cas客户端时内外网配置


    nginx代理springboot前后端分离服务–接入cas客户端时内外网配置

    我的前后端服务及cas服务端都是nginx代理的,假如我的地址如下:

    外网:10.213.163.219
    内网:192.168.10.150
    
    • 1
    • 2

    nginx配置

    user  nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        sendfile        on;
    
        keepalive_timeout  65;
    
        server {
            #nginx监听地址和端口(内网地址)
            listen       8091;
            server_name  192.168.10.150;
    
            #前端
            location ^~ /portal {
                autoindex on;
                add_header Access-Control-Allow-Origin *;
                add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
                proxy_cookie_path /portal/ /cas ;
                alias /usr/share/nginx/html;
                index  index.html;
                try_files $uri $uri/ /index.html last;
            }
    
            #cas服务端
            location ^~  /cas {
                proxy_pass http://192.168.10.150:8081/cas/;
                add_header Access-Control-Allow-Origin *;
                proxy_cookie_path /cas/ /;  #解决nginx转发丢失cookie的问题
    
                # 支持 OPTIONS 请求,并设置预检请求结果的缓存时间
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain charset=UTF-8';
                    add_header 'Content-Length' 0;
                    return 204;
                }
                
             }
    
             #后端
             location ^~  /my_server/ {
                proxy_pass http://192.168.10.150:8082/my_server/;
                add_header Access-Control-Allow-Origin *;
                proxy_cookie_path /my_server/ /;  #解决nginx转发丢失cookie的问题
    
                # 支持 OPTIONS 请求,并设置预检请求结果的缓存时间
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain charset=UTF-8';
                    add_header 'Content-Length' 0;
                    return 204;
                }
                
             }
        }
    
        #include /etc/nginx/conf.d/*.conf;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72

    前端配置

    因为前端是nginx代理的,所以前端配置的后端地址,cas服务端地址都应是外网地址
    示例:

     window.GlobalConfig = {
      TOB_BASE_URL: `http://10.213.163.219:8091/my_server`,
      TOB_CAS_LOGIN_URL: `http://10.213.163.219:8091/cas/login?service=${window.location}`,
      TOB_CAS_COOKIE_NAME: 'TGC',
      TOB_CAS_LOGINOUT_URL: 'http://10.213.163.219:8091/cas/logout?service=http://10.213.163.219:8091/my_server/api/login/logout',
      TOB_IS_OPEN_CAS: true
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    后端配置

    因为前端访问后端程序时需要进行登录验证,因为是在浏览器中访问的地址,所以跳转登录地址为外网地址才能进行访问,验证通过之后,服务端会获取票据ticket,会拿票据ticket去cas服务端验证,内网之间程序访问使用外网会不通,所以去cas服务端验证的地址应是内网的。

    cas:
      #cas服务端地址(内网)-nginx代理
      server-url-prefix: "http://192.168.10.150:8082/cas"
      #cas服务端地址登录地址(外网)-nginx代理
      server-login-url: "http://10.213.163.219:8091/cas/login"
      #后端服务地址(外网)-nginx代理
      client-host-url: "http://10.213.163.219:8091"
      validation-type: cas3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    【翻译工具】如何复活谷歌翻译之二
    MyCat (一) Mycat的安装
    阿里云iot haas python连接esp32;esp32物联网设备上报信息及云端信息获取;远程控制设备自带led熄灭;网页界面交互远程控制
    使用paddleX体验
    我们来谈谈什么是架构
    皮卡丘RCE靶场通关攻略
    Flutter SliverAppBar 吸顶效果
    循环结构——while循环、do...while循环
    LQ0240 括号问题【程序填空】
    课题学习(八)----卡尔曼滤波动态求解倾角、方位角
  • 原文地址:https://blog.csdn.net/weixin_42949219/article/details/134317501