Nginx之读写分离

1.实验拓扑

需求分析,前端一台nginx做负载均衡反向代理,后面两台httpd服务器。整个架构是提供BBS(论坛)服务,有一需求得实现读写分离,就是上传附件的功能,我们上传的附件只能上传到Web1,然后在Web1上利用rsync+inotify实现附件同步,大家都知道rsync+inotify只能是主向从同步,不能双向同步。所以Web1可进行写操作,而Web2只能进行读操作,这就带来读写分离的需求,下面我们就来说一下,读写分离怎么实现。

2.WebDAV功能说明

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。这样我们就能配置读写分离功能了,下面我们来具体配置一下。

3.修改配置文件


1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected] 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.重新加载一下配置文件


1

2

3

4

[[email protected] ~]# 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功能


1

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf

注,在<Directory "/var/www/html">下启用就行。

6.重新启动一下httpd


1

2

3

[[email protected] ~]# service httpd restart

停止 httpd:                                               [确定]

正在启动 httpd:                                           [确定]

7.测试一下


1

2

3

4

[[email protected] ~]# curl http://192.168.18.201

<h1>web1.test.com</h1>

[[email protected] ~]# curl http://192.168.18.202

<h1>web2.test.com</h1>

注,web1与web2访问都没问题。


1

2

3

4

5

6

7

8

9

10

[[email protected] ~]# 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 Method Not Allowed。


1

2

3

4

5

6

7

8

9

10

11

[[email protected] ~]# 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功能,但我们目录是root目录是不允许apache用户上传的,所以显示的是403 Forbidden。下面我们给apache授权,允许上传。


1

[[email protected] ~]# setfacl -m u:apache:rwx /var/www/html/

下面我们再来测试一下,


1

2

3

4

5

6

7

8

9

10

[[email protected] ~]# 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读写分离功能配置完成。最后,我们来查看一下上传的文件。


1

2

3

4

5

6

[[email protected] ~]# cd /var/www/html/

[[email protected] 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的反向代理、负载均衡、页面缓存、URL重写及读写分离就全部讲解完成。希望大家有所收获,^_^……

时间: 2024-10-07 08:36:26

Nginx之读写分离的相关文章

nginx实现读写分离

测试环境 OS: rhel6 A服务器: 配置nginx实现负载均衡和方向代理功能 B服务器: 简单的web服务器,没做其他配置,读服务器 C服务器: 简单的web服务器,没做其他配置,写服务器 部署: A服务器实现前端负载均衡和方向代理功能,后端有两台web服务器,B服务器只进行读操作,C服务器只进行写操作,而B和C服务器之间通过rsync+inotify实现数据的同步这样就简单的实现了nginx的读写分离功能. 配置之前先来了解一下什么是WebDAV?? WebDAV (Web-based

nginx的读写分离

一般网站都是用rsync+inotify实现文件同步,而rsync+inotify并不能双向同步,所以这个时候我们就要使用到读写分离.拓扑:nginx:192.168.137.50:80          后端web:apache1:192.168.137.51:80                           apache2:192.168.137.52:80这里我们使用nginx作为反向代理,使用if语句和$request_method模块实现读写分离,配置如下: server {

Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx之反向代理、日志格式、集群、缓存、压缩、URl 重写,读写分离配置

location的模式匹配按照优先级由低到高有以下四种: Nginx作为一个优秀的Web服务器,不仅在处理静态内容上比Apache优秀,还经常被用来做反向代理服务器,且支持缓存,URL重写,自定义格式,读写分离等功能,并且支持在TCP/IP第七层实现集群功能,基于AIO(异步I/O)event_driven(事件驱动)mmap(内存映射)等机制和功能,具有轻量级.高性能.消耗低.特性丰富.配置简单等特点 实验环境: node1:192.168.139.2 node2:192.168.139.4

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx反向代理 负载均衡 页面缓存 URL重写及读写分离

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

[转载]Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx反向代理、负载均衡、缓存、URL重写及读写分离

nginx.conf: main,worker_process.error_log.user.group: event{} 事件驱动相关 httpd{} 关于http相关的配置 server{} 虚拟主机 upstream NAME{}负载均衡模块 需定义在server之外 location URI{}  URI访问属性 location URI {}:               对当前路径及子路径下的所有对象都生效:            location = URI {}:        

基于nginx的TCP Proxy实现数据库读写分离

nginx非常早就支持tcp proxy.可是一直不知道其使用,近期在nginx blog上看见了.一些实践者将其运用到数据库訪问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲详细的搭建实现.仅仅是最一些理论上的设计猜想. 直接上图 db集群.分为读db和写db.写db向读db同步数据. 读db仅仅能读,写db仅仅能写.图中读写各一个,仅仅是一个样例,实际须要依据业务来配置读写server比例. nginx tcp proxy实现读写分离.提供仅仅读的port和仅仅写的port.