>  기사  >  운영 및 유지보수  >  nginx 읽기-쓰기 분리를 구성하는 방법

nginx 읽기-쓰기 분리를 구성하는 방법

WBOY
WBOY앞으로
2023-05-18 15:19:571440검색

nginx 읽기 및 쓰기 분리

1. 실험적 토폴로지

nginx 읽기-쓰기 분리를 구성하는 방법

요구 사항 분석, 로드 밸런싱 역방향 프록시로 프런트 엔드에 하나의 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

nginx 읽기-쓰기 분리를 구성하는 방법

의 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&#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제