配置NFS实现nginx动静分离
Posted 不像话
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置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脚本,上传资源文件
2.# more /etc/httpd/conf/httpd.conf //查看在APP1的lamp环境
3.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动静分离的主要内容,如果未能解决你的问题,请参考以下文章