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

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

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

c 复制代码
外网:10.213.163.219
内网:192.168.10.150

nginx配置

c 复制代码
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;
}

前端配置

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

示例:

json 复制代码
 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
}

后端配置

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

c 复制代码
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
相关推荐
摇滚侠几秒前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis 使用 MyBatis-Plus 阅读笔记 40
spring boot·笔记·mybatis
guo_wen_qiang2 小时前
mac中docker desktop服务端开启远程访问
运维·服务器·macos·docker
小五传输3 小时前
消防总队信创改造实践:国产文件传输服务器解决文件传输难题
大数据·运维·安全
云飞云共享云桌面3 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
T型码农要学习3 小时前
开源项目5|FileBrowser:免费在线文件管理器!随时随地管控服务器文件
运维·服务器·人工智能·开源
朱 欢 庆3 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
智恒百亿3 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能
志栋智能8 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术8 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
名字还没想好☜9 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes