Nginx session丟失問題處理解決方法

126雲發表於2021-03-21

在用nginx的反向代理tomcat的路徑中,可能會出現session丟失問題。每傳送一次請求 JESSIONID  都會發生改變,說明上一次形成的session丟失,從而建立新的session。

第一種情況:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server{
   listen 80;
   server_name
   charset utf-8;
   location /{
     proxy_redirect off;
     proxy_pass
     proxy_set_header Host $host;
     proxy_set_header Referer $http_referer;
     proxy_set_header X-Real-Ip $remote_addr;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
   access_log logs/tomcat_access.log;
 }

由於當前對的nginx只是監聽一個埠,不設定路徑,所有一般不會出現session丟失的問題。

第二種情況:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server{
   listen 80;
   server_name
   root/opt/tomcat-jhyx/webapps/jhyx/;
   charset utf-8;
   location /{
     proxy_pass
     proxy_set_header Host $host;
     proxy_set_header Referer $http_referer;
     proxy_set_header X-Real-Ip $remote_addr;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
   access_log logs/tomcat_access.log;
 }

這種情況,指定了tomcat的資料夾,不僅僅是一個埠監聽,會導致每次請求都會發生變化,導致session丟失。

第三種情況:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server{
   listen 80;
   server_name
   root/opt/tomcat-jhyx/webapps/jhyx/;
   charset utf-8;
   location /{
     proxy_redirect off;
     proxy_pass
     proxy_cookie_path/jhyx//;//設定cookie路徑,從而不導致每次發生請求發生變化。
     proxy_cookie_path/jhyx/;
     proxy_set_header Host $host;
     proxy_set_header Referer $http_referer;
     proxy_set_header X-Real-Ip $remote_addr;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
   access_log logs/tomcat_access.log;
 }

這時候,發現你的問題依然沒有解決,這時候你在想,我明明已經設定cookie路徑了,怎麼還不行呢,那是因為你請求的時候沒有傳送cookie。

 第四種情況:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server{
   listen 80;
   server_name
   root/opt/tomcat-jhyx/webapps/jhyx/;
   charset utf-8;
   location /{
     proxy_redirect off;
     proxy_pass
     proxy_cookie_path/jhyx//;
     proxy_cookie_path/jhyx/;
     proxy_set_header Host $host;
     proxy_set_header Referer $http_referer;
     proxy_set_header Cookie $http_cookie; //請求傳送時攜帶cookie資訊
     proxy_set_header X-Real-Ip $remote_addr;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
   access_log logs/tomcat_access.log;
 }

希望你在茫茫網路,找到一個正確的解決方法。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957453/viewspace-2764044/,如需轉載,請註明出處,否則將追究法律責任。

相關文章