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.修改配置文件


location / {
                proxy_pass http://192.168.18.202;
                if ($request_method = "PUT"){
                        proxy_pass http://192.168.18.201;
                }
        }


4.重新加载一下配置文件
   /usr/local/nginx/sbin/nginx -s reload
   
5.配置httpd的WebDAV功能
[root@web1 ~]# vim /etc/httpd/conf/httpd.conf

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

6.进行上传测试   
[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 Method Not Allowed。


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


转载于:https://blog.51cto.com/wushank/1678555

Nginx 读写分离详解相关推荐

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

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

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

    标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...

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

    本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...

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

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  5. 【数据库七】搭建MySQL主从复制和读写分离详解

    详解搭建搭建MySQL主从复制和读写分离 1.案例实施:搭建MySQL主从复制 1.1 主节点数据库(CentOS 7-5) 1.2 从节点数据库(CentOS 7-6) 1.3 从节点数据库(Cen ...

  6. Nginx动静分离详解

    Nginx动静分离基本概述 动静分离,通过中间件将动态请求和静态请求进行分离 那为什么要通过中间件将动态请求和静态请求进行分离?减少不必要的请求消耗,同时能减少请求的延时. Nginx动静分离场景实践 ...

  7. Sharding JDBC分片和读写分离详解

    目录 Sharding Sphere简介 开始使用Sharding JDBC 数据分片 简单示例 Spring Boot示例 代码分析 属性分析 绑定表和广播表 真实表 绑定表 广播表 Shardin ...

  8. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  9. nginx.conf配置详解

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  10. nginx.conf 配置文件详解

    本文来说下nginx.conf 配置文件详解 文章目录 Nginx 配置文件概述 nginx.conf 配置文件 通用(这里是 windows 系统系 nginx1.14.2 下 nginx.conf ...

最新文章

  1. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
  2. 面向对象程序设计上机练习一(函数重载)
  3. silverlight实现2D人物动画
  4. 深度学习笔记二:PAC,PAC白化,ZCA白化
  5. 【报告分享】2021年空巢青年研究报告:静水流深,不将就的青春.pdf(附下载链接)...
  6. 那桃林深处最美的风景
  7. 开机显示erro:file'/boot/grub/i386-pc/normal.mod' not解决
  8. 转(static final 和final的区别)
  9. 压缩JPG图片大小而且不失真
  10. 微信转发软件后缀_简单修改后缀让微信发送25M以上微信大视频
  11. 使用Senparc.Weixin SDK搭建微信公众号服务程序
  12. Python爬虫:爬了7天的斗鱼,我们来看一下主播们的真实现状
  13. 【阿里云】DCDN全站加速介绍及配置
  14. 一种能克服反光现象的围棋图谱可靠识别方法
  15. 力天创见客流分析功能需求
  16. 回顾2018年云计算九大亮点
  17. 洛谷P2327 [SCOI2005]扫雷 题解
  18. Android Studio Flavors详解
  19. 使用POI读取大量数据EXCEL文件,并解析成自定义javaBean
  20. TCP网络编程之chat聊天室

热门文章

  1. ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 2, 1
  2. dataframe数据按行做线性拟合
  3. python 输出函数表达式——LaTeX数学公式
  4. 数据结构:实验二 队列的基本功能实现
  5. 遥感软件envi5.31
  6. xml文档的pull解析与SAX解析
  7. listview 加载的时候报java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误
  8. java同步和互斥程序说明(一)
  9. 异步处理老司机:IntentService 源码分析
  10. C++中this指针小记