nginx 읽기 및 쓰기 분리
1. 실험적 토폴로지
요구 사항 분석, 로드 밸런싱 역방향 프록시로 프런트 엔드에 하나의 nginx, 후면에 두 개의 httpd 서버. 전체 아키텍처는 bbs(포럼) 서비스를 제공하는 것입니다. 이는 첨부 파일 업로드 기능인 읽기와 쓰기의 분리를 달성해야 합니다. 우리가 업로드하는 첨부 파일은 web1에만 업로드할 수 있으며 rsync+inotify가 사용됩니다. web1에서 첨부 파일을 동기화하려면 rsync가 +inotify는 양방향 동기화가 아닌 마스터에서 슬레이브로만 동기화할 수 있다는 것을 알고 있습니다. 따라서 web1은 쓰기 작업을 수행할 수 있는 반면 web2는 읽기 작업만 수행할 수 있으므로 읽기와 쓰기의 분리가 필요합니다. 읽기와 쓰기를 분리하는 방법에 대해 이야기해 보겠습니다.
2.webdav 기능 설명
webdav(웹 기반 분산 저작 및 버전 관리)는 http 1.1 프로토콜을 기반으로 하는 통신 프로토콜입니다. http 1.1을 확장하고 get, post, head와 같은 여러 http 표준 메소드 외에 몇 가지 새로운 메소드를 추가하여 애플리케이션이 웹 서버에 직접 읽고 쓸 수 있도록 하고 파일 잠금 및 잠금 해제 쓰기를 지원합니다. 파일 버전 제어도 지원합니다. 이런 식으로 읽기-쓰기 분리 기능을 구체적으로 구성해 보겠습니다.
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.
[root@web1 ~]# vim /etc/httpd/conf/httpd.conf
의 webdav 기능을 구성합니다. ; 활성화하면 됩니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!