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
|
[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.重新加载一下配置文件
1
2
3
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.配置httpd的WebDAV功能
1
|
[root@web1 ~] # vim /etc/httpd/conf/httpd.conf
|
注,在<Directory "/var/www/html">下启用就行。
6.重新启动一下httpd
1
2
3
|
[root@web1 ~] # service httpd restart
停止 httpd: [确定]
正在启动 httpd: [确定]
|
7.测试一下
1
2
3
4
|
[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访问都没问题。
1
2
3
4
5
6
7
8
9
10
|
[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。
1
2
3
4
5
6
7
8
9
10
11
|
[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授权,允许上传。
1
|
[root@web1 ~] # setfacl -m u:apache:rwx /var/www/html/
|
下面我们再来测试一下,
1
2
3
4
5
6
7
8
9
10
|
[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读写分离功能配置完成。最后,我们来查看一下上传的文件。
1
2
3
4
5
6
|
[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的反向代理、负载均衡、页面缓存、URL重写及读写分离就全部讲解完成。希望大家有所收获,^_^……
Nginx之读写分离相关推荐
- nginx的读写分离
一般网站都是用rsync+inotify实现文件同步,而rsync+inotify并不能双向同步,所以这个时候我们就要使用到读写分离.拓扑:nginx:192.168.137.50:80 ...
- Nginx之反向代理、日志格式、集群、缓存、压缩、URl 重写,读写分离配置
location的模式匹配按照优先级由低到高有以下四种: Nginx作为一个优秀的Web服务器,不仅在处理静态内容上比Apache优秀,还经常被用来做反向代理服务器,且支持缓存,URL重写,自定义格式 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解...
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解【转载】
本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...
- Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- php laravel 默认cookie加密 读取怎么办_Laravel+Nginx轻松实现读写分离、负载均衡,网站并发能力提升N倍...
前言: 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问 ...
- 架构测试:HAproxy实现负载均衡,前端为nginx+php,数据库实现读写分离和高可用...
环境: • 202.106.0.6: as client • 202.106.0.17:as firewall • 202.106.0.147: as powerDNS • 192.168.205.2 ...
- nginx+mycat实现负载均衡、数据库的主从复制、读写分离
材料:XManager:七台CentOS(Linux)系统虚拟机(一台安装nginx,两台安装Tomcat+JDK,一台安装mycat,三台安装mysql数据库:一台master主节点,两台slave ...
最新文章
- Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第6章-一阶时滞多智能体系统分组一致性
- PAT甲级1094 The Largest Generation:[C++题解]邻接表存树、每层节点数量、vector模拟bfs层序遍历、bfs另类实现
- 计算机网络实验(思科模拟器Cisco Packet Tracer)——交换机配置以及虚拟局域网VLAN
- html把实线变成虚线,Html5 Canvas 绘制虚线和实线的切换方法
- MySQL数据库常见的几个问题
- POJ3784-Running Median(运行中位数)【链表】
- 数独项目--关键代码展示:
- 给 TComboBox 添加图标 - 回复 heyongan 的问题
- 如何从“点子”落地到“执行”?—完整解析1个手游传播类mini项目的进化
- 极客大学产品经理训练营 产品思维和产品意识(上) 第3课总结
- My First HelloWorld Module for Apache~
- kubectl配置tab补全
- ipython怎么安装_如何装ipython
- 医疗行业源代码该如何保密
- 在ENVI5.3 下基于GLT/IGM文件的几何校正具体过程
- Html5之canvas清除特定矩形、getContext、fillStyle、fillRect、clearRect、strokeRect
- java吉他游戏_[Java]吉他谱浏览器 0.1
- 工匠精神消失的手机2020:衰落、变局、绝唱、破圈
- 苏宁并购家乐福是零售市场必然走向