Home  >  Article  >  Operation and Maintenance  >  How to solve the problem of Nginx forwarding lost cookies

How to solve the problem of Nginx forwarding lost cookies

WBOY
WBOYforward
2023-05-15 21:10:122940browse

1. Lost Cookies operation

路径一 :http://localhost:8080/content/requestAction!showMainServiceReqDetail.action
路径二 :http://localhost/content/requestAction!showMainServiceReqDetail.action
路径三 :http://localhost/clp/requestAction!showMainServiceReqDetail.action

Path one is direct access, path two and path three are accessed through nginx

Three access prerequisites
①The browser has cookies, As shown in the figure below:
By accessing the pathhttp://localhost:8080/content/requestAction!XXX.action Attach the JSESSIONID in Cookies.
There is JSESSIONID in this cookie, which stores the unique JSESSIONID that can be authenticated by the backend for this visit. Without it, access will be inaccessible.

How to solve the problem of Nginx forwarding lost cookies

②The nginx configuration file is configured

server {
      listen       80;
      server_name  localhost;
location /clp {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost:8080/content;
   
}

location /content {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost:8080/content; 
}

Accessed through the above three paths, path one and path two can be accessed successfully, path three access fails

2. The reason for losing cookies

Because the access path of http://localhost:8080/content/requestAction!XXX.action is /content/requestAction,
No nginx is used for access in method one, so cookies will not be lost.
Although nginx is used for access in method two, nginx will not be lost because the path is the same before being forwarded by nginx
Method 3 access uses nginx, and the access paths are also different, which leads to the problem of lost cookies forwarded by nginx.

3. Solution

location /clp {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_cookie_path /content /clp;  #这一句就可以解决nginx转发丢失cookie的问题
   proxy_pass http://localhost:8080/content;	   
}

4. Points that are easily confused

The access path above is the path in the red box in the picture below, only the first slash It's the one behind.

How to solve the problem of Nginx forwarding lost cookies

The above is the detailed content of How to solve the problem of Nginx forwarding lost cookies. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete