nginx : ver.1.20.1
tomcat: ver. 8.0

 

nginx를 이용 무중단 배포 시도 중 아래와 같이 .. 세션이 끊기는 현상 발생

 

"Unauthorized...?!"
console 로그에 401...

 

nginx 설정(nginx.conf)은 

 

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	client_max_body_size 0;

    #gzip  on;

	upstream tomcatGroup{
		ip_hash;
		server 0.0.0.0:8088;
		server 0.0.0.0:8092;
	}

    server {
        #listen       8080; //8087
		listen 80; 
		listen [::]:80;
        server_name  (domain name);

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
			proxy_pass http://tomcatGroup;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			#proxy_set_header X-Forwarded-Proto $scheme;
			#proxy_set_header X-NginX-Proxy true;
			#proxy_redirect off;
			charset utf-8;
			proxy_set_header Host $http_host;
			proxy_cookie_path ~*^/.* /;
			#add_header 'Access-Control-Allow-Origin' '*';
        }
    }
	...
}

 

upstream load balancing 할 IP 주소, port 입력 후 location에 proxy_pass에 upstream 지정해둠

 

//web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xml:xsi= ...

   <distributable/> //세션 공유를 위해 추가
 </web-app>

 

검색 결과 한가지 더 해줘야함. tomcat/conf/server.xml 에서

 

//server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port= ...
	...
	<Service name="Catalina">
	   <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat8092">
	
         //주석 해제
         <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
           ...
       </Engine>
    </Service>
</Server>

 

 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

이 태그 주석을 해제함.

 

아래 톰캣 공식 문서에 자세한 내용이 나와있음.

 

F12> Application> Storage -Cookies의 해당 도메인 주소 sessionID 값 확인 

 tomcat:8092 startUp  -> Tomcat:8088 shutDown 후 다시 확인

JSESSIONID 의 값은 같은데 끝에 jvmRoute 값으로 설정한 8092로 변경됨

 

 

참고:

https://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html

https://fliedcat.tistory.com/126

https://www.lesstif.com/java/tomcat-46366798.html

'server > nginx' 카테고리의 다른 글

nginx backup 설정 (feat. tomcat clustering)  (0) 2023.01.27

+ Recent posts