この記事は主に、Nginx セッション共有の問題に対する解決策を紹介します。記事内のサンプル コードは非常に詳細で、皆さんの学習や仕事に一定の参考値があります。困っている友人は参考にしてください。 Nginx はセッション共有の問題を解決します: 1. nginx または haproxy による負荷分散。nginx による負荷分散の場合は、ip_hash 構成を追加できます。haproxy による負荷分散の場合は、balance source 構成を使用して、1 つの IP を使用するリクエストが同じサーバーに送信されるようにできます。 2. データベースを使用してセッションを同期します。 3. セッション データを同期するために Cookie を使用しますが、セキュリティが不十分であり、HTTP リクエストでパラメータを送信する必要があるため、帯域幅の消費量が増加します。 4.Tomcat はセッション共有を構成します。 5. セッション クラスターを使用して Redis を保存します。 1: プロジェクトを作成し、2つのTomcatを起動する 2: サーブレットテストを書く パッケージ com.zn.servlet; javax.servlet.ServletException をインポートします。 javax.servlet.annotation.WebServlet をインポートします。 javax.servlet.http.HttpServlet をインポートします。 javax.servlet.http.HttpServletRequest をインポートします。 javax.servlet.http.HttpServletResponse をインポートします。 java.io.IOException をインポートします。 @WebServlet("/nginxSessionServlet") パブリッククラス SessionIPServlet は HttpServlet を拡張します { 保護された void doPost(HttpServletRequest リクエスト、HttpServletResponse レスポンス) は ServletException、IOException をスローします { System.out.println("現在のリクエストポート: "+request.getLocalPort()); 文字列アクション = request.getParameter("action"); //セッションにデータを保存する if(action.equals("setSession")){ request.getSession().setAttribute("ユーザー名","zhangsan"); }それ以外の場合、(action.equals("getSession")){ response.getWriter().write((String)request.getSession().getAttribute("ユーザー名")); } } protected void doGet(HttpServletRequest リクエスト、HttpServletResponse レスポンス) は ServletException、IOException をスローします { doPost(リクエスト、レスポンス); } } 3. Nginxを使わずにエフェクトを表示する それぞれ8080と8081にアクセスします 4. nginx.confファイルを設定する アップストリーム myserver{ ip_ハッシュ; サーバー 127.0.0.1:8080; サーバー 127.0.0.1:8081; } サーバ{ 聞く 81; サーバー名 www.bproject.com; 位置 / { ルートhtml; proxy_pass http://myserver; インデックス index.html index.htm; } } 5. 再度訪問する 方法2: spring-session+Redisを使用してセッション共有を実装する 1: 依存関係をインポートする <!--Spring Boot および Redis アプリケーションの基本環境設定--> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-redis --> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </依存関係> <!--Spring セッションと Redis アプリケーションの基本環境設定。使用する前に Redis を有効にする必要があります。そうしないと、Spring ブートの起動時にエラーが発生します --> <依存関係> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </依存関係> 2: コントローラーテストを作成する @レストコントローラ パブリッククラス SessionController { @RequestMapping("/setSession") パブリック文字列setSession(HttpServletResponseレスポンス、HttpServletRequestリクエスト)はIOExceptionをスローします{ リクエスト.getSession().setAttribute("ユーザー名","wang"); 「成功」を返します。 } @RequestMapping("/getSession") パブリック文字列 getSession(HttpServletRequest リクエスト、HttpServletResponse レスポンス){ 文字列ユーザー名 = (文字列) request.getSession().getAttribute("username"); ユーザー名を返します。 } } 3: application.properties ファイル サーバーポート=8082 #サーバーポート=8083 #redis 構成 spring.redis.password: wang2003 4: プロジェクトのテストを開始する 結論: このソリューションは構成が簡単で、データは安全かつ安定しており、効率的で、広く使用されています。 注: Redis でこのデータ パケットを削除すると、ポート 8082 および 8083 でセッションを取得できなくなります。これは、セッションが JVM に存在せず、Redis に転送されることを意味します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL マルチバージョン同時実行制御 MVCC の実装
>>: Vue-cliフレームワークはタイマーアプリケーションを実装します
NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...
ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...
この記事では、centos7にyumを使用してMySQL 8.0.12をインストールする詳細な手順を...
目次使用インストールルーティングでどのように使用しますか?読み込み速度の比較最近、中間およびバックエ...
この記事では、シームレスなスクロールを実現するためのフレックスレイアウトのサンプルコードを主に紹介し...
序文1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比...
win10 + Ubuntu 20.04 LTS デュアルシステムインストール (UEFI + GP...
目次tf-gpu をダウンロード取得したtf-gpuイメージに基づいて独自のイメージを構築するイメー...
この記事では、ブラインド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具体...
今日は、ext3 や他の以前のファイル システムとの違いを含め、ext4 の歴史について説明します。...
この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...
目次1. 検索バーの内容をカスタマイズする2. 検索ボタンをカスタマイズする検索バーをカスタマイズし...
HTML では、一般的な URL はさまざまな方法で表現されます。相対 URL:コードをコピーコード...
序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...
1. Docker とは何ですか? (1)DockerはLinuxコンテナ内でアプリケーションを実行...