nginx の読み取りと書き込みの分離を構成する方法

WBOY
リリース: 2023-05-18 15:19:57
転載
1444 人が閲覧しました

nginx の読み取りと書き込みの分離

1. 実験的トポロジ

nginx の読み取りと書き込みの分離を構成する方法

要件分析、フロントエンドは次のように行われます。 nginx 負荷分散リバース プロキシ、背後に 2 つの httpd サーバー。全体のアーキテクチャは bbs (フォーラム) サービスを提供することです 添付ファイルのアップロード機能である読み取りと書き込みの分離を実現する必要があります アップロードする添付ファイルは web1 にのみアップロードでき、その後 rsync inotify が使用されますweb1 上の添付ファイルを同期します。rsync inotify は誰もが知っています。これはマスターからスレーブへの同期のみ可能であり、双方向同期はできません。したがって、web1 は書き込み操作を実行できますが、web2 は読み取り操作のみを実行できるため、読み取りと書き込みを分離する必要があります。

2.webdav 機能の説明

webdav (Web ベースの分散オーサリングおよびバージョニング) は、http 1.1 プロトコルに基づく通信プロトコルです。これは http 1.1 を拡張し、get、post、head などのいくつかの http 標準メソッドに加えていくつかの新しいメソッドを追加するため、アプリケーションは Web サーバーに対して直接読み書きできるようになり、ファイルのロックとロック解除の書き込みをサポートします。ファイルのバージョン管理もサポートしています。このようにして、読み書き分離機能を設定することができますので、詳しく設定してみましょう。

3. 設定ファイルの変更

[root@nginx nginx]# vim /etc/nginx/nginx.conf
server {
    listen    80;
    server_name localhost;
    #charset koi8-r;
    #access_log logs/host.access.log main;
    location / {
        proxy_pass http://192.168.18.202;
        if ($request_method = "put"){
            proxy_pass http://192.168.18.201;
        }
    }
}
ログイン後にコピー

4. 設定ファイルのリロード

[root@nginx ~]# service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新载入 nginx:                      [确定]
ログイン後にコピー

5. httpd の webdav 機能の設定

[root@web1 ~]# vim /etc/httpd/conf/httpd.conf
ログイン後にコピー

nginx の読み取りと書き込みの分離を構成する方法

注、<ディレクトリ "/var/www/html"> で有効にするだけです。

6. httpd

[root@web1 ~]# service httpd restart
停止 httpd:                        [确定]
正在启动 httpd:                      [确定]
ログイン後にコピー

7. 再起動します。テストします

[root@nginx ~]# curl http://192.168.18.201
<h1>web1.test.com</h1>
[root@nginx ~]# curl http://192.168.18.202
<h1>web2.test.com</h1>
ログイン後にコピー

web1 と web2 へのアクセスには問題ありません。

[root@nginx ~]# curl -t /etc/issue http://192.168.18.202
<!doctype html public "-//ietf//dtd html 2.0//en">
<html><head>
<title>405 method not allowed</title>
</head><body>
<h1>method not allowed</h1>
the requested method put is not allowed for the url /issue.
<hr>
<address>apache/2.2.15 (centos) server at 192.168.18.202 port 80</address>
</body></html>
ログイン後にコピー

注意: web2 にファイルをアップロードする場合、web2 には人間が読める機能しかなく、webdav アカウントを開く機能がないため、405 メソッドの表示は許可されません。

[root@nginx ~]# curl -t /etc/issue http://192.168.18.201
<!doctype html public "-//ietf//dtd html 2.0//en">
<html><head>
<title>403 forbidden</title>
</head><body>
<h1>forbidden</h1>
you don&#39;t have permission to access /issue
on this server.
<hr>
<address>apache/2.2.15 (centos) server at 192.168.18.201 port 80</address>
</body></html>
ログイン後にコピー

注意: web1 で webdav 機能を有効にしましたが、ディレクトリはルート ディレクトリであり、Apache ユーザーはアップロードを許可されていないため、403 禁止が表示されます。次に、Apache にアップロードを許可します。

[root@web1 ~]# setfacl -m u:apache:rwx /var/www/html/
ログイン後にコピー

もう一度テストしてみましょう。

[root@nginx ~]# curl -t /etc/issue http://192.168.18.201
<!doctype html public "-//ietf//dtd html 2.0//en">
<html><head>
<title>201 created</title>
</head><body>
<h1>created</h1>
resource /issue has been created.
<hr />
<address>apache/2.2.15 (centos) server at 192.168.18.201 port 80</address>
</body></html>
ログイン後にコピー

ファイルが正常にアップロードされたことがわかります。これは、nginx の読み書き分離機能の構成が完了したことを示しています。最後に、アップロードされたファイルを見てみましょう。

[root@web1 ~]# cd /var/www/html/
[root@web1 html]# ll
ログイン後にコピー

総投与量 12

drwxr-xr-x 2 root  root  4096 9月  4 13:16 forum
-rw-r--r-- 1 root  root   23 9月  3 23:37 index.html
-rw-r--r-- 1 apache apache  47 9月  4 14:06 issue
ログイン後にコピー

以上がnginx の読み取りと書き込みの分離を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート