目次
1. ip_hash に基づくセッション永続性
2. Cookie ベースのセッション保持
ホームページ 運用・保守 Nginx Nginx がセッション永続性を実装する方法は何ですか?

Nginx がセッション永続性を実装する方法は何ですか?

May 29, 2023 pm 11:15 PM
nginx

1. ip_hash に基づくセッション永続性

Nginx のロード バランシングを行う場合、アップストリームに ip_hash を設定すると、アクセスされた IP のハッシュ結果に従って各リクエストが割り当てられ、固定サーバーにマッピングされます。バックエンドサーバーがダウンするとセッションは失われますが、再度リクエストが行われると別の正常なサーバーが再確立されセッションが維持されます。問題の 1 つは、同じ IP クライアントが固定バックエンド サーバーにアクセスするため、負荷の不均衡が発生する可能性があることです。 ip_hash のセッション永続形式は次のとおりです。

これは、バックエンド サーバーがすべて正常に実行されていることを前提としています。

在Nginx代理服务器(负载均衡服务器)中配置:===========================================upstream test {   ip_hash;      server 10.20.151.112:80;      server 10.20.151.113:80;}
ログイン後にコピー

Nginx がセッション永続性を実装する方法は何ですか?

この結果が返される理由について知りたい場合は、次のサイトを参照してください。 my Nginx 負荷 詳細な構成と動作については、バランスの取れた実装ブログで確認してください。したがって、ip_hash を使用すると、セッションの永続性が達成されることを理解するのは難しくありません。つまり、クライアントはバックエンド サーバー 112 への固定アクセス権を持ち (このサーバーがダウンしていない限り)、他のサーバーには戻りません。ページが再度更新された場合でも、バックエンド サーバーにコンテンツが送信されます (注: 実際の運用環境では、バックエンド サーバーから要求元のクライアントに返されるコンテンツは同じです。これは効果をテストするためだけです)。

固定アクセスのサーバーがダウンしていると仮定します。

Nginx がセッション永続性を実装する方法は何ですか?

この方法ユーザーのセッションを Cookie に保存します。ユーザーが別のサーバーに割り当てられている場合は、まずユーザーのセッションがサーバー上に存在するかどうかを確認します。存在しない場合は、まずセッションを Cookie 内のサーバーに保存して、セッションを保持します。 Cookie の保存にはセキュリティ上のリスクがあり、ハッカーが Cookie を盗んで関連情報を取得する可能性があります。この方法でセッションの永続性を実現するには、sticky_cookie_insert モジュールを追加する必要がありますが、ip_hash との違いは、IP に基づいてクライアントを判断するのではなく、Cookie に基づいてクライアントを判断することです。

スティッキーモジュールを追加します(yumメソッドを使用してNginxをインストールしました)

yum install -y pcre* openssl* gcc gcc-c++ make   --安装编译环境
wget  https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip   --下载sticky模块
nginx -v  --查看Nginx版本,因为要下载和yum安装nginx对应版本的源码包
wget  http://nginx.org/download/nginx-1.18.0.tar.gz
yum install -y unzip   --安装解压工具
unzip 08a395c66e42.zip --解压模块包
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ nginx-sticky-module-ng/  --改名
tar xzvf nginx-1.18.0.tar.gz -C /usr/local/  --解压nginx的源码包
cd /usr/local/nginx-1.18.0/
nginx -V   --查看yum安装nginx所有模块
======================================================================================
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/root/nginx-sticky-module-ng
======================================================================================
make && make install
Nginx -V  --再次查看Nginx模块,添加成功
ログイン後にコピー

Nginx がセッション永続性を実装する方法は何ですか?

プロキシサーバー(負荷分散サーバー)で設定します

vim upstream.conf   --在子配置文件conf.d中创建upstream.conf
=====================================================================================
upstream qfedu {
        server 192.168.198.143;
        server 192.168.198.145;
        sticky;
}
ログイン後にコピー
vim proxy.conf     ----在子配置文件conf.d中创建proxy.conf
=====================================================================================
server {
    listen       80;
    server_name  localhost;
    
    location / {
        proxy_pass http://testweb;
    }
}
ログイン後にコピー
nginx -t    --检查配置文件语法是否有错
nginx -s reload   --重新加载配置文件
ログイン後にコピー

http://10.20.151.240/

Nginx がセッション永続性を実装する方法は何ですか?

にアクセスしてください。

以上がNginx がセッション永続性を実装する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法

nginxの起動コマンドと停止コマンドとは何ですか? nginxの起動コマンドと停止コマンドとは何ですか? Apr 02, 2024 pm 08:45 PM

nginxの起動コマンドと停止コマンドとは何ですか?

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

thinkphpの実行方法

Tomcatとnginxの違いは何ですか Tomcatとnginxの違いは何ですか Dec 27, 2023 pm 05:07 PM

Tomcatとnginxの違いは何ですか

nginx へようこそ!それを解決するにはどうすればよいですか? nginx へようこそ!それを解決するにはどうすればよいですか? Apr 17, 2024 am 05:12 AM

nginx へようこそ!それを解決するにはどうすればよいですか?

phpmyadminの登録方法 phpmyadminの登録方法 Apr 07, 2024 pm 02:45 PM

phpmyadminの登録方法

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Nodejsプロジェクトをサーバーにデプロイする方法

ウェブサイトにアクセスする際のnginxの問題を解決する方法 ウェブサイトにアクセスする際のnginxの問題を解決する方法 Apr 02, 2024 pm 08:39 PM

ウェブサイトにアクセスする際のnginxの問題を解決する方法

See all articles