Apache 外部ELB AWS的Cookie问题

Apache 外部ELB AWS的Cookie问题,apache,amazon-web-services,tomcat,cookies,amazon-elb,Apache,Amazon Web Services,Tomcat,Cookies,Amazon Elb,我们的系统中有一个Apache web服务器,它将所有请求转发给内部ELB,然后转发给运行不同应用程序的Tomcat。其中一个应用程序设置了一个cookie,用于了解用户是否有会话。这在使用内部平衡器时非常有效。对于某些架构问题,我们必须将其中一个平衡器从内部平衡器更改为外部平衡器。问题是,当我们想要从apache中运行的php代码访问在外部平衡器后面运行的应用程序时,cookies不会通过,而外部ELB会更改所有这些应用程序。外部ELB有自己的子域。 下面是我们设置cookie的java代码:

我们的系统中有一个Apache web服务器,它将所有请求转发给内部ELB,然后转发给运行不同应用程序的Tomcat。其中一个应用程序设置了一个cookie,用于了解用户是否有会话。这在使用内部平衡器时非常有效。对于某些架构问题,我们必须将其中一个平衡器从内部平衡器更改为外部平衡器。问题是,当我们想要从apache中运行的php代码访问在外部平衡器后面运行的应用程序时,cookies不会通过,而外部ELB会更改所有这些应用程序。外部ELB有自己的子域。 下面是我们设置cookie的java代码:

public int validaLogin(HttpSession sesion,
        final HttpServletRequest request,
        final HttpServletResponse response, String usuario,
        int login_user_id) {
    final String sesion_username = (String) sesion
            .getAttribute(Utiles.CONST_USUARIO);
    int codigo = 0;
    if (sesion_username == null || usuario != null
            && !(usuario.equals(sesion_username))) {
        List<String[]> listaimei = new ArrayList<String[]>();
        listaimei.clear();

        sesion.setAttribute(URL, request.getQueryString());

        if (usuario != null) {
            sesion.setAttribute(Utiles.CONST_USUARIO, usuario);
            sesion.setAttribute("User", usuario);
            Enumeration<Locale> locales = request.getLocales();
            if (locales.hasMoreElements()) {
                Locale locale = (Locale) locales.nextElement();
                sesion.setAttribute("Locale", locale);
            }
        }

        if (login_user_id > 0) {
            sesion.setAttribute(Utiles.CONST_IDUSUARIO, login_user_id);
        }

        String login_ip;
        if (request.getHeader("x-forwarded-for") == null) {
            login_ip = request.getHeader("host");
        } else {
            login_ip = request.getHeader("x-forwarded-for");
        }
        sesion.setAttribute("ip", login_ip);
        SqlQuery.setUserInfoInSession(sesion, login_user_id);
        List<Integer> listaPermisos = SqlQuery.setUserPermisosInSession(sesion, login_user_id);

        // Obtiene lista de IMEI visible por el usuario
        objResultGetListaIMEI userIMEI = getlistaimeiFromDatabase(
                login_user_id, login_ip);
        codigo = userIMEI.getResultado();
        sesion.setAttribute(Utiles.CONST_LISTAIMEI, userIMEI.getListaImei());

        // Guarda sesion como Header
        response.setHeader("wpsid", sesion.getId());

        // Guarda sesion como Cookie
        Cookie cookie = new Cookie("wpsid", sesion.getId());
        cookie.setMaxAge(-1);
        cookie.setPath("/");
        response.addCookie(cookie);

        // Agrega nueva sesion al hash 05/03/2014 CV
        WaypointSessionsInit.dsAddNewSession(sesion, userIMEI.getListaImei(), listaPermisos);

    }

    return codigo;
}
public int validaLogin(HttpSession session,
最终HttpServletRequest请求,
最终HttpServletResponse响应,字符串usuario,
int登录(用户id){
最终字符串sesion\u username=(字符串)sesion
.getAttribute(Utiles.CONST_USUARIO);
int-codigo=0;
如果(sesion_username==null | | usuario!=null
&&!(usuario.equals(sesion\u用户名))){
List listaimei=new ArrayList();
listaimei.clear();
setAttribute(URL,request.getQueryString());
if(usuario!=null){
sesion.setAttribute(Utiles.CONST_USUARIO,USUARIO);
sesion.setAttribute(“用户”,usuario);
枚举区域设置=request.getLocales();
if(locales.hasMoreElements()){
Locale=(Locale)locales.nextElement();
setAttribute(“Locale”,Locale);
}
}
如果(登录用户id>0){
sesion.setAttribute(Utiles.CONST\u id、login\u user\u id);
}
字符串登录地址;
if(request.getHeader(“x-forwarded-for”)==null){
login_ip=request.getHeader(“主机”);
}否则{
login_ip=request.getHeader(“x-forwarded-for”);
}
sesion.setAttribute(“ip”,登录ip);
setUserInfoInSession(sesion,login\u user\u id);
List listaPermisos=SqlQuery.setuserpermissinsession(sesion,login\u user\u id);
//在乌萨里奥的可见光下获得
objResultGetListaIMEI userIMEI=getlistaimeiFromDatabase(
登录\用户\ id、登录\ ip);
codigo=userIMEI.getResultado();
setAttribute(Utiles.CONST_LISTAIMEI,userIMEI.getListaImei());
//瓜达赛森科莫收割台
setHeader(“wpsid”,sesion.getId());
//瓜达赛森科莫饼干
Cookie Cookie=新Cookie(“wpsid”,sesion.getId());
cookie.setMaxAge(-1);
cookie.setPath(“/”);
addCookie(cookie);
//Agrega nueva sesion al hash 2014年3月5日简历
WayPointSessionInit.dsAddNewSession(sesion,userIMEI.getListaImei(),listaPermisos);
}
返回codigo;
}