1. nginxの動的と静的の分離の簡単な設定 web1は静的サーバー、web2は動的サーバー、node2はプロキシであると仮定します。 1.1 ディレクトリごとに分ける web1は静的リクエストのみを処理する [root@web1 ~]# mkdir -p /var/www/www/image [root@web1 ~]# yum -y install lrzsz [root@web1 ~]# cd /var/www/www/image/ [root@web1 画像]# rz [root@web1 画像]# ll -rw-r--r--。 1 ルート ルート 156848 3月13日 11:31 nhrzyx.png [root@web2 ~]# vim /etc/httpd/conf/httpd.conf ドキュメントルート "/var/www/www" [root@web2 ~]# systemctl httpdを再起動します web2は動的なリクエストのみを処理する [root@web2 ~]# mkdir -p /var/www/www/dynamic [root@web2 ~]# echo dynamic10 > /var/www/www/dynamic/index.html [root@web2 ~]# vim /etc/httpd/conf/httpd.conf ドキュメントルート "/var/www/www" [root@web2 ~]# systemctl httpdを再起動します アクセステスト http://172.25.254.134/image/nhrzyx.png http://172.25.254.135/dynamic/index.html 1.2 要請による分離 プロキシの設定 [root@lb01 conf]# vim nginx.conf ワーカープロセス 1; イベント { ワーカー接続 1024; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリームスタックプール{ サーバー 172.25.254.134:80 重み=5; } アップストリームダイナミックプール{ サーバー 172.25.254.135:80 重み=5; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { ルートhtml; インデックス index.html index.htm; proxy_set_header ホスト $host; proxy_pass http://dynamic_pools; } 場所 /画像/ { proxy_set_header ホスト $host; proxy_pass http://stack_pools; } 場所 /dynamic/ { proxy_set_header ホスト $host; proxy_pass http://dynamic_pools; } } } [root@lb01 conf]# nginx -s リロード ホストを構成してブラウザアクセスをテストする 172.25.254.131 www.lbtest.com http://www.lbtest.com/image/nhrzyx.png http://www.lbtest.com/dynamic/ 1.3 拡張子による分離 [root@lb01 conf]# vim nginx.conf ワーカープロセス 1; イベント { ワーカー接続 1024; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリームスタックプール{ サーバー 172.25.254.134:80 重み=5; } アップストリームダイナミックプール{ サーバー 172.25.254.135:80 重み=5; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { ルートhtml; インデックス index.html index.htm; proxy_set_header ホスト $host; proxy_pass http://dynamic_pools; } 場所 ~ .*.(jpg|png|gif|css|js|swf|bmp|jsp|php|asp)$ { proxy_set_header ホスト $host; proxy_pass http://stack_pools; } } } [root@lb01 conf]# nginx -s リロード http://www.lbtest.com/image/nhrzyx.png 1.4 クライアント識別に基づく分離 http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリームスタックプール{ サーバー 172.25.254.134:80 重み=5; } アップストリームダイナミックプール{ サーバー 172.25.254.135:80 重み=5; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { ($http_user_agent ~* "MSIE") の場合 { proxy_pass http://dynamic_pools; } ($http_user_agent ~* "firefox") の場合 { proxy_pass http://stack_pools; } } proxy_set_header ホスト $host; } } [root@web1 イメージ]# echo stack_web>> /var/www/www/test.html [root@web1 イメージ]# systemctl restart httpd [root@web2 ~]# echo dynamic_web>>/var/www/www/test.html [root@web2 ~]# systemctl httpdを再起動します アクセスするにはIEとFirefoxブラウザを使用してください http://www.lbtest.com/test.html 1.5 クライアントPCとモバイルの分離を使用する http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリームスタックプール{ サーバー 172.25.254.134:80 重み=5; } アップストリームダイナミックプール{ サーバー 172.25.254.135:80 重み=5; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { ($http_user_agent ~* "iphone") の場合 { proxy_pass http://dynamic_pools; } ($http_user_agent ~* "android") の場合 { proxy_pass http://stack_pools; } } proxy_set_header ホスト $host; } } AndroidとiPhoneを使用してテストにアクセスします http://www.lbtest.com/test.html 2. 最適化
ネット.ipv4.tcp_fin_timeout = 2 ネット.ipv4.tcp_tw_recycle = 1 ネット.ipv4.tcp_tw_reuse = 1 ネット.ipv4.tcp_syncookies = 1 ネット.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 ネット.ipv4.tcp_max_syn_backlog = 16348 ネット.ipv4.tcp_max_tw_buckets = 36000 ネット.ipv4.tcp_syn_retries = 1 ネット.ipv4.tcp_synack_retries = 1 ネット.ipv4.tcp_max_orphans = 16384 ネット.コア.somaxconn = 16384 ネット.コア.ネットdev_max_backlog = 18364 keepalive と nginx の簡単な紹介 nginx ロードバランシングの高可用性を実現するために keepalived を設定する IP ドリフトの検出には、キープアライブの方が適しています。リソース サービスが制御されている場合は、ストレージ方向の高可用性など、ハートビートの方が適しています。 3. nginxリバースプロキシのヘルスチェック nginx がリバース プロキシとして動作する場合、バックエンド サーバーがダウンすると、ngixn はこのリアル サーバーをアップストリームから削除できないため、リクエストをバックエンド リアル サーバーに転送します。nginx は、顧客に返されるエラー ページを解決するためにローカルで proxy_next_upstream を有効にすることができますが、それでもリクエストはこのサーバーに転送され、その後他のサーバーに転送されるため、1 回の転送が無駄になります。Taobao チームがリア リアル サーバーのヘルス状態を検出するために開発した nginx モジュール nginx_upstream_check_module の助けを借りて、バックエンド サーバーが利用できない場合、すべてのリクエストはこのサーバーに転送されません。 チェック間隔=5000 上昇=1 下降=3 タイムアウト=4000; 3.1 設定ファイルに直接追加する
ワーカープロセス 1; イベント { ワーカー接続 1024; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリーム web_pools { サーバー 172.25.254.134:80 重み=5; サーバー 172.25.254.135:80 重み=5; # サーバー 172.25.254.158:80 重み = 5 バックアップ; チェック間隔=5000 上昇=1 下降=3 タイムアウト=4000; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { #ルートhtml; # インデックス index.html index.htm; proxy_set_header ホスト $host; proxy_pass http://web_pools; } } } nginx: [emerg] /usr/local/nginx/conf/nginx.conf:14 に不明なディレクティブ "check" があります nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストに失敗しました チェック失敗 nginxモジュールをダウンロードし、https://github.com/yaoweibin/nginx_upstream_check_module、nginxを使用してモジュールをインストールし、nginxのアップグレードとして扱います。 3.2 モジュールのダウンロード [root@node2 nginx-1.12.2]# yum -y gitをインストールします [root@node2 nginx-1.12.2]# git clone https://github.com/yaoweibin/nginx_upstream_check_module.git [root@node2 nginx-1.12.2]# ll drwxr-xr-x. 7 ルート ルート 4096 4月13日 00:57 nginx_upstream_check_module [root@node2 nginx-1.12.2]# cd nginx_upstream_check_module/ [root@node2 nginx_upstream_check_module]# ll -rw-r--r--。1 ルート ルート 0 4月13日 00:57 変更 -rw-r--r--. 1 ルート ルート 7921 4月 13 00:57 check_1.11.1+.patch -rw-r--r--. 1 ルート ルート 8330 4月13日 00:57 check_1.11.5+.patch -rw-r--r--. 1 ルート ルート 8060 4月13日 00:57 check_1.12.1+.patch -rw-r--r--。1 ルート ルート 8054 4月13日 00:57 check_1.14.0+.patch -rw-r--r--。1 ルート ルート 5483 4月13日 00:57 check_1.2.1.patch -rw-r--r--. 1 ルート ルート 7130 4月13日 00:57 check_1.2.2+.patch -rw-r--r--。1 ルート ルート 7094 4月13日 00:57 check_1.2.6+.patch -rw-r--r--。1 ルート ルート 6791 4月13日 00:57 check_1.5.12+.patch -rw-r--r--。1 ルート ルート 8295 4月13日 00:57 check_1.7.2+.patch -rw-r--r--。1 ルート ルート 8346 4月13日 00:57 check_1.7.5+.patch -rw-r--r--。1 ルート ルート 8509 4月 13 00:57 check_1.9.2+.patch -rw-r--r--. 1 ルート ルート 6943 4月13日 00:57 check.patch -rw-r--r--。1 ルート ルート 749 4月13日 00:57 config drwxr-xr-x. 2 ルート ルート 43 4月 13 00:57 doc -rw-r--r--。1 ルート ルート 1709 4月 13 00:57 nginx-sticky-module.patch drwxr-xr-x. 2 ルート ルート 29 4月 13 00:57 nginx-tests -rw-r--r--。1 ルート ルート 112010 4月 13 00:57 ngx_http_upstream_check_module.c -rw-r--r--。1 ルート ルート 529 4月 13 00:57 ngx_http_upstream_check_module.h -rw-r--r--。1 ルート ルート 2848 4月 13 00:57 ngx_http_upstream_jvm_route_module.patch -rw-r--r--。1 ルート ルート 11509 4月 13 00:57 README drwxr-xr-x. 6 ルート ルート 79 4月 13 00:57 テスト -rw-r--r--。1 ルート ルート 3342 4月13日 00:57 アップストリーム_フェア.パッチ drwxr-xr-x. 2 ルート ルート 81 4月 13 00:57 util 3.3 パッチ適用 [root@node2 nginx_upstream_check_module]# cd ../ [root@node2 nginx-1.12.2]# yum -y パッチをインストール 注: nginxバージョンの更新により、nginxバージョン1.12以上のパッチはcheck_1.11.5+.patchです。 [root@node2 nginx-1.12.2]# パッチ -p0 < ./nginx_upstream_check_module/check_1.11.5+.patch ファイル src/http/modules/ngx_http_upstream_hash_module.c のパッチ適用 パッチファイル src/http/modules/ngx_http_upstream_ip_hash_module.c ファイル src/http/modules/ngx_http_upstream_least_conn_module.c のパッチ適用 ファイル src/http/ngx_http_upstream_round_robin.c のパッチ適用 パッチファイル src/http/ngx_http_upstream_round_robin.h 3.4 コンパイルとインストール [root@node2 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx \ > --user=nginx --group=nginx \ > --with-http_ssl_module \ > --with-http_realip_module \ > --http_addition_module \ を追加 > --with-http_gzip_static_module \ > --with-http_stub_status_module \ > --http_sub_module \ を追加 > --with-pcre \ > --add-module=./nginx_upstream_check_module objs という名前の新しいディレクトリが表示されます。 drwxr-xr-x. 4 ルート ルート 187 4月 13 01:04 objs sed -e "s|%%PREFIX%%|/usr/local/nginx|" \ -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \ < man/nginx.8 > オブジェクト/nginx.8 make[1]: ディレクトリ `/usr/local/src/nginx-1.12.2' を離れます
drwxr-xr-x. 3 ルート ルート 41 4月 13 01:04 アドオン -rw-r--r--。1 ルート ルート 16895 4月13日 01:04 autoconf.err -rw-r--r--. 1 ルート ルート 42396 4月13日 01:04 Makefile -rwxr-xr-x. 1 root root 5993600 4月13日 01:06 nginx #nginx 新しい実行可能ファイル -rw-r--r--. 1 root root 5341 4月13日 01:06 nginx.8 -rw-r--r--。1 ルート ルート 7202 4月13日 01:04 ngx_auto_config.h -rw-r--r--。1 ルート ルート 657 4月13日 01:03 ngx_auto_headers.h -rw-r--r--。1 ルート ルート 6412 4月 13 01:04 ngx_modules.c -rw-r--r--。1 ルート ルート 87120 4月13日 01:06 ngx_modules.o drwxr-xr-x. 9 ルート ルート 91 4月 3 22:38 src nginxをバックアップし、新しいnginxをコピーします [root@node2 nginx-1.12.2]# cd /usr/local/nginx/sbin/ [root@node2 sbin]# mv nginx nginx.bak [root@node2 sbin]# cp /usr/local/src/nginx-1.12.2/objs/nginx /usr/local/nginx/sbin [root@node2 sbin]# /usr/local/nginx/sbin/nginx -s 停止
[root@node2 sbin]# id nginx
[root@node2 sbin]# useradd nginx [root@node2 sbin]# id nginx
[root@node2 sbin]# /usr/local/nginx/sbin/nginx -s 停止 [root@node2 sbin]# /usr/local/nginx/sbin/nginx [root@node2 ~]# nginx -t
インストール成功 3.5 構成 ワーカープロセス 1; イベント { ワーカー接続 1024; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; ファイル送信オン; キープアライブタイムアウト65; アップストリーム web_pools { サーバー 172.25.254.134:80 重み=5; サーバー 172.25.254.135:80 重み=5; # サーバー 172.25.254.158:80 重み = 5 バックアップ; チェック間隔=5000 上昇=1 下降=3 タイムアウト=4000; } サーバー{ 聞く 80; サーバー名 www.lbtest.com; 位置 / { proxy_set_header ホスト $host; proxy_pass http://web_pools; } 場所 /nステータス{ ステータスを確認します。 access_log オフ; } } } [root@node2 conf]# nginx -s reload 3.6 アクセステスト どちらの状態も正常です 1つをオフにする [root@web1 イメージ]# systemctl stop httpd 両方をオフにする [root@web2 ~]# systemctl stop httpd 開く [root@web1 イメージ]# systemctl start httpd [root@web2 ~]# systemctl httpdを再起動します バックエンドチェック機能の実装に成功 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: React でカレンダー コンポーネントを構築するためのステップ バイ ステップ ガイド
1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...
BFCコンセプト:ブロック フォーマット コンテキストは、BFC 内の要素を外部の要素から分離する独...
1. 背景Sysbench は、システムのハードウェア パフォーマンスをテストできるストレス テスト...
この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...
[必須] ユーザーインターフェースPhotoShop/花火デザインアーティストと協力して、スケッチを...
単一の MYSQL サーバーが現在の Web サイトのトラフィックに対応できない場合の最適化ソリュー...
ビュー: MySQL のビューはテーブルと多くの類似点があります。ビューも複数のフィールドと複数のレ...
背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを...
勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...
目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...
1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...
基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...
この記事では、例を使用して、MySQL 共同インデックスの機能と使用方法を説明します。ご参考までに、...
ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...
この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...