配置NFS实现nginx动静分离

			

			
案例子任务一、安装配置NFS服务器
步骤1:使用docker容器配置NFS服务器
- 启动centos容器并进入
docker run -d --privileged centos:v1 /usr/sbin/init

 - 在centos容器中使用yum方式安装nfs-utils
#yum install nfs-utils

 - 保存容器为镜像
#docker commit 容器ID nfs

 - 启动容器nfs,设定地址为172.18.0.120
 

#docker run -d --privileged --net cluster --ip 172.18.0.120 --name nfs nfs /usr/sbin/init
- 进入容器查看nfs配置文件
 
# more /etc/nfs.conf
# more /etc/nfsmount.conf
- 启动nfs服务,查看监听端口
# systemctl start nfs-server
 - 新建共享目录/var/www/share,设置权限为777
 

- 编辑/etc/exports文件
 
/var/www/share 172.18.0.*(rw,sync)

- 导出nfs共享目录
#exportfs -rv

 - 查看nfs上的共享目录
#showmount -e IP地址

 
步骤1:使用宿主机配置NFS服务器
- # yum install nfs-utils //在宿主机安装nfs
 

- 查看nfs配置文件
 
# more /etc/nfs.onf
# more /etc/nfsmount.conf
- 启动nfs服务,查看监听端口
# systemctl start nfs-server
 

- 新建共享目录/var/www/share,设置权限为777
 


- 编辑/etc/exports文件
 
/var/www/share 172.18.0.*(rw,sync)

- 导出nfs共享目录
#exportfs -rv
 

- 查看nfs上的共享目录
#showmount -e IP地址
 

步骤2:启用APP1和APP2两个容器,挂载共享目录
- 启动容器APP1,设定地址为172.18.0.111
 
docker run -d --privileged --net cluster --ip 172.18.0.111 --name APP1 php-apache /usr/sbin/init

- 启动容器APP2,设定地址为172.18.0.112
 
docker run -d --privileged --net cluster --ip 172.18.0.112 --name APP2 php-apache /usr/sbin/init

- # yum install nfs-utils //进入容器并安装nfs
 - #showmount -e 172.18.0.1 //在APP1查看nfs上的共享目录
 


- 共享目录挂在到本地目录
 
# mkdir /var/www/share
# mount 172.18.0.1:/var/www/share /var/www/share

- 在APP1的/var/www/share上读写文件,在nfs上查看
 


- APP2按以上步骤配置
 



案例子任务二、配置nginx1、APP1实现动静分离
步骤1:在APP1上编写PHP脚本,上传资源文件
- 使用任务一中的APP1
 - # more /etc/httpd/conf/httpd.conf //查看在APP1的lamp环境
 - vim /var/www/index.php //在APP1上编辑php文件
 
<?php
function serverIp(){ //获取服务器IP地址
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=$_SERVER['LOCAL_ADDR'];
}
}else{
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>动静分离测试</title>
<link rel="stylesheet" type="text/css" href="share/banner.css">
<script type="text/javascript" src="share/jquery-1.7.2.min.js"></script>
</head>
<body>
<div class="banner">
<ul>
<li><img src="share/banner_02.jpg" /></li>
<li><img src="share/banner_01.gif" /></li>
</ul>
</div>
<div class="main_list">
<ul>
<li><a href="#">动静分离测试...</a></li>
<li><a href="#">动静分离测试...</a></li>
</ul>
</div>
<span><?php echo serverIp(); ?></span>
</body>
</html>

- 把图片资源文件上传到APP1服务器的 /var/www/share目录
 

- 在宿主机nfs服务器的 /var/www/share目录中检查文件是否存在
 

- 在宿主机使用curl访问http://172.18.0.111/index.php
 

步骤2:配置nginx反向代理,访问APP1
- 启动容器nginx1,设定地址为172.18.0.11,把80端口映射到宿主机8080
 
docker run -d --privileged --net cluster --ip 172.18.0.11 -p 8080:80 --name nginx1 nginx-keep /usr/sbin/init

- 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务
 
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://172.18.0.111;
}
- 在主机使用浏览器访问http://192.168.*.100/index.php
 

步骤3:配置nginx反向代理,宿主机nginx,支持动静分离
- 在nfs宿主机编辑/etc/nginx/conf.d/ default.conf,启用nginx服务
 
server {
listen 80;
server_name file.test.com;
location / {
root /var/www;
index index.html index.htm;
}
}


- 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务
 
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://172.18.0.111;
}
location /share {
proxy_pass http://172.18.0.1/share;
}
}

- 在主机使用浏览器访问http://192.168.*.100/index.php
 

步骤4:配置nginx1、APP1、APP2、宿主机nfs和nginx,支持负载均衡动静分离
- 容器APP1和宿主机使用上面步骤做好的,不做调整
 - 仿照步骤1,在APP2上编写PHP脚本,上传资源文件
 


- 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务
 
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://APP;
}
location /share {
proxy_pass http://172.18.0.1/share;
}
upstream APP {
server 172.18.0.111;
server 172.18.0.112;
}
}

- 在主机使用浏览器访问http://192.168.*.100/index.php
 


配置NFS实现nginx动静分离的更多相关文章
- Nginx动静分离经典案例配置
		
随着Nginx高性能Web服务器大量被使用,目前Nginx最新稳定版为1.2.6,张宴兄在实际应用中大量使用Nginx,并分享Nginx高性能Web服务器知识,使得Nginx在国内也是飞速的发展.那今 ...
 - Nginx动静分离知识及配置
		
Nginx动静分离知识及配置,本质上与分离上传下载功能是相同功能,本质就是在文件服务器也是需要部署WEB应用的,只是在进行代理分离的时候分配到对应的文件服务器上去. 随着Nginx高性能Web服务器大 ...
 - 使用nginx和tomcat配置反向代理和动静分离
		
背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...
 - Nginx动静分离经典
		
Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/s ...
 - Nginx动静分离实现
		
Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Ng ...
 - Nginx动静分离架构
		
Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...
 - Nginx 动静分离与负载均衡的实现
		
一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ...
 - Nginx动静分离
		
动静分离 Nginx动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路. ...
 - Nginx动静分离架构&&HA-LB集群整合
		
Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...
 
随机推荐
- Fiddler 4 对app接口抓取
			
一.先打开模拟器 二.在Fiddler 4 选项中修改端口号和去掉一个勾选 三.在终端查看ip 输入ipconfig 四.点开模拟器的设置 五.点击WLAN 六.长按网络,修改网络 七.输入ip端口号 ...
 - 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
			
输入格式:第一行输入需要凑的钱数 m 和硬币的种类 n (0<m<100,0<n<10),第二行输入 n 种硬币的具体币值,假设硬币供应量无限多. 输出格式:输出最少需要的硬币 ...
 - 关于moviepy打包报错AttributeError: module audio/video.fx.all has no attribute fadein、crop文章的纠错和抄袭
			
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 老猿前面有篇文章<moviepy应用pyin ...
 - 第10.5节  使用__all__定义Python模块导入白名单
			
一. 引言 <第10.4节 Python模块的弱封装机制>介绍了Python模块的的弱封装机制,除了使用弱封装机制来从一定程度上防止导入特定成员外,Python模块中还提供可另外一种类似白 ...
 - Day7 【Scrum 冲刺博客】
			
每日会议总结 昨天已完成的工作 方晓莹(PIPIYIng) 对接车位管理接口 处理对接接口遇到的bug和错误 方子茵(Laa-L) 暂无 黄芯悦(Sheaxx) 完成住户车位查询页面 完成住户物业报修 ...
 - 微信小程序中使用text-indent实现首行缩进
			
问题由来:在小程序中使用text标签包裹了一段话,要做一个首行缩进的效果,但是不起效果 . 解决方法:使用view标签代替text,使用text-indent:2em即可解决.
 - Android原子操作——android_atomic_cmpxchg
			
网络给我们带来了很多方便,查阅我们目前认知范围外的道理.但是,凡事也要学会分辨,不然可能会误导你. 话说,最近的一个项目(Mercury-Project),接近尾声中.然而,在调试一个demo时,却遇 ...
 - java web简单的增删改查
			
1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...
 - oracle 11g调优常用语句
			
1.查询表的基数及选择性 select a.column_name, b.num_rows, a.num_distinct cardinality, round( ...
 - 浅谈JAVA代码优化
			
JAVA代码的优化分为两个方面: 一.减小代码的体积.二.提高代码的执行效率. ============================================================ ...