ホームページ  >  記事  >  運用・保守  >  Nginx が失われた Cookie を転送する問題を解決する方法

Nginx が失われた Cookie を転送する問題を解決する方法

WBOY
WBOY転載
2023-05-15 21:10:122997ブラウズ

1. 失われた Cookie の操作

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

パス 1 は直接アクセス、パス 2 とパス 3 は nginx を介してアクセスされます

3 つのアクセス前提条件
①ブラウザには Cookie があります。以下の図:
パスにアクセスする http://localhost:8080/content/requestAction!XXX.action JSESSIONIDをCookieに添付します。
この Cookie には JSESSIONID があり、この訪問に対してバックエンドによって認証できる一意の JSESSIONID が保存されています。これがないとアクセスできません。

Nginx が失われた Cookie を転送する問題を解決する方法

②nginx 設定ファイルが設定されています

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; 
}

上記の 3 つのパスを通じてアクセスします。パス 1 とパス 2 は正常にアクセスできますが、パス 3 のアクセスは失敗します

2. Cookie が失われる理由

http://localhost:8080/content/requestAction!XXX.action のアクセス パスが /content であるためです。 /requestAction,
最初のメソッドのアクセスには nginx が使用されないため、Cookie は失われません。
2 番目のメソッドのアクセスには nginx が使用されますが、パスは転送される前と同じです。 nginx を使用するため、nginx が失われることはありません
方法 3 のアクセスは nginx を使用し、アクセス パスも異なるため、nginx によって転送された Cookie が失われる問題が発生します。

3. 解決策

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. 混同されやすい点

上記のアクセスパスは、下図の赤枠内のパス、最初のスラッシュのみです。後ろの人。

Nginx が失われた Cookie を転送する問題を解決する方法

以上がNginx が失われた Cookie を転送する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。