`

nginx 反身代理-cookie 共享

 
阅读更多

 

   nginx 代理N个服务,通过URL上下文区分,其中一个服务是登录服务,写cookie.

    api服务:http:/www.domain.com/api

    SSO服务:http://www.domain.com/sso

    前端服务:http://www.domain.com/front 

 

   登录成功后,sso服务写cookie:

   

Set-Cookie:

 

SESSION=YmUyMDMwMGItZjc1ZC00ZmE1LWIwNmQtYTljMTczNWFhNDE3; Path=/sso/; HttpOnly; SameSite=Lax
 
 
 
前端服务提交请求时,在/front不能使用/sso下的cookie,所以造成登录无效。
 
 
所以需要/sso 服务,写cookie时,把 cooke的 Path=/sso/ 改为==》 Path=/; /front才能使用该 cookie .
 
 
 
实现方式 nginx
 
 
location /sso{
 
proxy_pass http://sso proxy_http_version 1.1;
 
proxy_set_header X-Real-IP $remote_addr;
 
proxy_set_header Host $host; proxy_set_header
 
Connection keep-alive; proxy_set_header Keep-Alive 600;
 
keepalive_timeout 600;
 
proxy_cookie_path /sso/ /;
 
}
 
 

nginx 官方文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html?&_ga=1.161910972.1696054694.1422417685#proxy_cookie_path

 

Syntax:	proxy_cookie_path off;
proxy_cookie_path path replacement;
Default:	
proxy_cookie_path off;
Context:	http, server, location
This directive appeared in version 1.1.15.

Sets a text that should be changed in the path attribute of the “Set-Cookie” header fields of a proxied server response. Suppose a proxied server returned the “Set-Cookie” header field with the attribute “path=/two/some/uri/”. The directive

proxy_cookie_path /two/ /;
will rewrite this attribute to “path=/some/uri/”.

The path and replacement strings can contain variables:

proxy_cookie_path $uri /some$uri;
The directive can also be specified using regular expressions. In this case, path should either start from the “~” symbol for a case-sensitive matching, or from the “~*” symbols for case-insensitive matching. The regular expression can contain named and positional captures, and replacement can reference them:

proxy_cookie_path ~*^/user/([^/]+) /u/$1;
There could be several proxy_cookie_path directives:

proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;
The off parameter cancels the effect of all proxy_cookie_path directives on the current level:

proxy_cookie_path off;
proxy_cookie_path /two/ /;
proxy_cookie_path ~*^/user/([^/]+) /u/$1;

 

 

 

分享到:
评论

相关推荐

    nginx-1.9.3--tomcat-(6,7)-memcached-session共享负载

    在构建高性能、高可用性的Web服务时,"nginx-1.9.3--tomcat-(6,7)-memcached-session共享负载"是一个典型的架构模式,它整合了Nginx、Tomcat以及Memcached来实现负载均衡和Session共享。这个配置方案能够有效地提高...

    利用Nginx反向代理解决跨域问题详解

    在之前的分享的跨域资源共享的文章中,有提到要注意跨域时,如果要发送Cookie,Access-Control-Allow-Origin就不能设为*,必须指定明确的、与请求网页一致的域名。在此次项目开发中与他人协作中就遇到此类问题。 ...

    nginx-upstream-jvm-route nginx共享Session

    标题 "nginx-upstream-jvm-route nginx共享Session" 涉及到的是在使用Nginx作为反向代理服务器时,如何实现多个Java应用服务器(通常指的是JVM实例)之间的Session共享。这通常在构建高可用性和负载均衡的Web服务...

    nginx-redis-tomcat_Session共享

    在现代Web应用开发中,Session共享是一个至关重要的概念,特别是在分布式系统中,如Nginx、Redis和Tomcat的组合。这些技术各自扮演着不同的角色:Nginx作为反向代理服务器,Redis作为缓存数据库,而Tomcat是Java应用...

    Nginx负载均衡Redis—Session共享—NFS文件共享

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,以其高性能、稳定性、丰富的功能集、简单的配置方式和较低的资源消耗而闻名。在现代Web架构中,Nginx常被用作负载均衡器,用于在多...

    nginx-tomcat6_session共享Memcached包.zip

    1. **Nginx**:作为反向代理服务器,Nginx负责接收客户端请求,并根据预设的负载均衡策略将这些请求转发到后端的Tomcat服务器。它能够有效地分发流量,提高整体系统的响应速度和稳定性。 2. **Tomcat 6**:这是一个...

    nginx-tomcat-redis负载均衡,session共享依赖jar包

    首先,`nginx`是一个高性能的反向代理服务器和负载均衡器,它可以通过将来自客户端的请求分发到多个后端服务器,从而提高服务的可用性和响应速度。在配置`nginx`进行负载均衡时,通常会使用轮询、权重轮询、最少连接...

    nginx集群配置-测试通过

    在本文中,我们将深入探讨如何设置一个通过测试的Nginx集群,它利用了轮询策略的session复制和共享,以实现高效且稳定的负载均衡。 首先,Nginx是一个强大的反向代理服务器和HTTP缓存服务器,广泛用于处理静态内容...

    利用nginx解决cookie跨域访问的方法

    因此,即便后端服务器没有域名,也能通过Nginx的代理功能实现跨域请求和Cookie共享。 需要注意的是,在配置Nginx的过程中,需要确保正确设置相关模块,如文件异步IO模块(aio)和IPv6支持模块(ipv6),这些配置...

    nginx集成memcached-session-manager所需要的jar

    Nginx是一款高性能的HTTP和反向代理服务器,而Memcached则是一个分布式内存对象缓存系统。Memcached-session-manager是Java应用程序,用于在Tomcat或其他基于Servlet的容器中管理会话,并将其存储在Memcached中,以...

    Nginx+tomcat 实现负载均衡session共享demo

    `Nginx`作为一款高性能的反向代理服务器,常被用于负载均衡,而`Tomcat`则是一款广泛使用的Java应用服务器,尤其适合处理Servlet和JSP应用。本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`...

    nginx反向代理配置及优化以及核心讲解以及高性能集群搭建

    1. **Cookie共享**:通过设置相同的Session ID Cookie,在Nginx层面进行会话粘滞性处理,确保请求始终由同一台后端服务器处理。 2. **Session复制**:每个应用服务器都保存所有Session数据,但随着会话数量增加,...

    Nginx+Tomcat+Memcached共享session集群配置

    然而,传统的基于 Cookie 的会话管理方式在这样的架构下会遇到 Session 共享的问题,即用户在不同的 Tomcat 实例之间切换时可能会导致会话丢失。为了解决这一问题,通常会采用 Memcached 这样的分布式缓存系统来存储...

    nginx tomcat memcached 集群 session共享

    Nginx作为反向代理服务器,负责负载均衡,Tomcat作为应用服务器运行Java Web应用程序,而Memcached则作为分布式内存缓存系统,用于存储和共享session数据。 1. **Nginx**:Nginx是一个高性能的HTTP和反向代理服务器...

    nginx实现多个tomcat7直接session共享所需jar包

    标题中的“nginx实现多个tomcat7直接session共享所需jar包”指的是在分布式系统环境中,使用Nginx作为反向代理服务器,将用户请求分发到多个Tomcat7应用服务器上,同时实现用户会话(Session)在这些服务器之间的...

    Nginx+Tomcat+Session-高性能群集搭建.doc

    - 可以通过Nginx的jvmroute模块实现基于cookie的Session粘滞,使用户请求始终发送到同一台Tomcat服务器。 - 或者,配置外部Session存储,如在所有Tomcat实例间共享一个Memcached或Redis服务器,以保持Session数据...

    Nginx + Tomcat +session共享.docx

    在现代互联网架构中,Nginx 和 Tomcat 经常被一起使用,Nginx 作为前端反向代理服务器负责负载均衡,而 Tomcat 则作为后端应用服务器处理 Java 应用程序。在这样的配置中,确保用户会话(Session)在多个 Tomcat ...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo2

    这里我们关注的是如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat应用服务器集群配合,实现负载均衡,并且确保Session数据在多个Tomcat实例之间共享。这个场景对于大型网站或高并发的应用尤其实用,...

Global site tag (gtag.js) - Google Analytics