ホームページ >バックエンド開発 >PHPチュートリアル >nginx での proxy_pass から tomcat へのセッション損失の問題を解決する

nginx での proxy_pass から tomcat へのセッション損失の問題を解決する

WBOY
WBOYオリジナル
2016-08-08 09:21:521330ブラウズ

はじめに

私は常に nginx1.5.7 を Web サーバーおよびプロキシ サーバーとして使用してきました。1 つのアプリケーションは常に 1 つの Tomcat (1 つのポート、1 つのドメイン名のみ) に対応します。
今日、サーバー上に Tomcat を統合し、5 つのアプリケーションが 1 つの Tomcat を共有しました。
最初に発生する問題は、ユーザーがバックグラウンドに入るのを待機しているときに例外が発生し、ログインしているユーザー情報が見つからないことです。
デバッグの結果、リクエストが複数になり、セッションが不整合になっていることがわかり、別のブラウザがアクセスしているように感じられたため、セッションが失われたに違いないと結論付けました。

原因

慎重に分析した結果、問題は Nginx の構成にあるという結論に達しました。

<code>server_name  www<span>.</span>weixin4j<span>.</span>org;
charset utf<span>-</span><span>8</span>;
root   /opt/apache<span>-tomcat</span><span>-</span><span>7.0</span><span>.53</span>/webapps/weixin4j<span>/</span>;
location <span>/</span> {
    proxy_pass         http:<span>//127.0.0.1:8180/weixin4j/;</span>
    proxy_set_header   Host             <span>$host</span>;
    proxy_set_header   X<span>-Real</span><span>-IP</span><span>$remote_addr</span>;
    proxy_set_header   X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>;
}</code>

この設定により、Cookie の保存場所が「/」に基づいていないため、2 回目の訪問時にセッションが再作成され、セッション内の情報が失われます。

解決策

Cookieの保存パスを変更してください

<code>server_name  www<span>.</span>weixin4j<span>.</span>org;
charset utf<span>-</span><span>8</span>;
root   /opt/apache<span>-tomcat</span><span>-</span><span>7.0</span><span>.53</span>/webapps/weixin4j<span>/</span>;
location <span>/</span> {
    proxy_pass         http:<span>//127.0.0.1:8180/weixin4j/;</span>
    proxy_set_header   Host             <span>$host</span>;
    proxy_set_header   X<span>-Real</span><span>-IP</span><span>$remote_addr</span>;
    proxy_set_header   X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>;
    add_header From www<span>.</span>weixin4j<span>.</span>org;
    proxy_cookie_path /weixin4j<span>/</span><span>/</span>;
    proxy_set_header Cookie <span>$http_cookie</span>;
}</code>

サービスを再起動してテストしてください!
合格!

上記は、nginx の proxy_pass から tomcat へのセッション損失の問題を解決する方法を、関連する側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。