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 {

listen       80;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

proxy_pass http://192.168.137.51/;

if ( $request_method = "PUT"){

proxy_pass http://192.168.137.52;

}

index  index.html index.htm;

}

当$request_method为PUT,我们将请求转发给只做写的web端。

重启nginx,使用curl测试:

[[email protected] conf]# curl http://192.168.137.50

<h1>2.syk.com</h1>

[[email protected] conf]# curl http://192.168.137.50

<h1>2.syk.com</h1>

[[email protected] conf]# curl http://192.168.137.50

<h1>2.syk.com</h1>

[[email protected] conf]# curl http://192.168.137.50

<h1>2.syk.com</h1>

读取只被转发到了192.168.137.51端;

开启192.168.137.52端apache的上传模块:

vim /etc/httpd/conf/httpd.conf

在<Directory "/var/www/html">下添加:

dav on即可

测试:

[[email protected] conf]# curl -T /etc/passwd http://192.168.137.50

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>403 Forbidden</title>

</head><body>

<h1>Forbidden</h1>

<p>You don‘t have permission to access /passwd

on this server.</p>

<hr>

<address>Apache/2.2.15 (CentOS) Server at 192.168.137.52 Port 80</address>

</body></html>

出现403,是因为apache目录属组为root,所以这里做修改:

setfacl -m u:apache:rwx /var/www/html/

再次测试:

[[email protected] conf]# curl -T /etc/passwd http://192.168.137.50

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>201 Created</title>

</head><body>

<h1>Created</h1>

<p>Resource /passwd has been created.</p>

<hr />

<address>Apache/2.2.15 (CentOS) Server at 192.168.137.52 Port 80</address>

</body></html>

并且我们可以看到,文件被上传到了192.168.137.52端。

时间: 2024-07-28 21:35:17

nginx的读写分离的相关文章

nginx实现读写分离

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

Nginx之读写分离

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

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.