• 使用nginx+dnsmasq解决同IP不同端口Session冲突问题


    由于一台服务器上需要部署多个项目,而我们的WEB项目因为用到框架都是一样的,导致同时运行,session相互冲突,这个登录后,那个就得重新登录,造成了使用不方便,原因是IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。

            解决方法:

    方法1:在不同的IP上进行部署。

    方法2:修改应用服务器的配置,例如tomcat 7:

     context.xml:

       <Context path=”” docBase=”ROOT” sessionCookieName="workSessionId"</Context>

    方法3:使用不同的域名,这里介绍使用nginx+dnsmasq实现方法。

    nginx部署在192.168.128.128,dnsmasq部署在192.168.128.100,应用均在192.168.128.100

    nginx配置:

    vi  /etc/nginx/conf.d /default.conf

    server {
        listen       80;
        server_name  jenkins.qa.local;

        access_log /var/log/jenkins.log;

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://192.168.128.100:8080;
            proxy_redirect off;
        }
    }


    server {
        listen       80;
        server_name  shop.qa.local;

        access_log /var/log/shop.log;

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://192.168.128.100;
            proxy_redirect off;
        }
    }

    server {
        listen       80;
        listen       443 ssl;
        server_name  mail.qa.local;

        access_log /var/log/mail.log;

        location / {
            return      301 https://192.168.128.100/mail;
        }

        location /admin {
            return      301 https://192.168.128.100/iredadmin;
        }

        #root /home/www;
        #ssl on;
        #ssl_certificate /etc/nginx/certs/server.crt;
        #ssl_certificate_key /etc/nginx/certs/server.key;
    }

    dnsmasq配置:

    vi /etc/dnsmasq.conf

    address=/qa.local/192.168.128.128

  • 相关阅读:
    Oracle从入门到精通(笔记)
    MongoDB教程(笔记)
    深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记2)
    深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
    获取本周、本季度、本月、上月的开始日期、结束日期
    TortoiseSVN新人使用指南
    Eclipse创建java web工程
    supersock问题
    UDP错误10054:远程主机强迫关闭了一个现有的连接
    【转】javascript深入理解js闭包
  • 原文地址:https://www.cnblogs.com/zjd2626/p/8365932.html
Copyright © 2020-2023  润新知