nginx の読み取りと書き込みの分離
1. 実験的トポロジ
要件分析、フロントエンドは次のように行われます。 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
注、<ディレクトリ "/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'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 サイトの他の関連記事を参照してください。