Nginx的动静分离实验
Nginx的动静分离实验
1、如何区分静态文件和动态文件?
- location中:
- expires 60d:静态资源–>可以缓存,不会向服务器去请求;
- proxy_pass:把请求转发给某个组
- fastcgi_pass:处理fastcgi协议来解析的;
- php运行可以借助php-fpm组件来运行的;
Nginx的动静分离架构:简单理解就是:
- 静态页面的请求,可以交给nginx处理
- 如果是动态的清洁球,就可以交给TomCAT/Resin、PHP/ASP来处理
Nginx是可以直接把动态和静态的文件混合发布,并且由Nginx来主宰;
2、大体上的理解:
动静分离指的是将动态请求和静态请求分隔开,然后分别路由到相应的后端服务器
- 客户请求的资源,如果是一些动态的数据,就交给后端PHP服务器来处理
- 客户请求的资源,如果是一些静态的数,那么就交给另外一台服务器处理
- nginx就是根据配置,对不同的请求做出不同的转发,从而提高整个服务器系统的性能;
3、实验规划:
- 使用到3台服务器:
- nginx-server服务器:处理静态资源,并且实现均衡负载
- 192.168.75.130
- 另外两台后端服务器:用处理动态资源
- 安装ToCAT服务
- 192.168.75.131–>TomCAT-1
- 192.168.75.132->TomCAT-2
- nginx-server服务器:处理静态资源,并且实现均衡负载
–>Ngin-xserver静态资源服务器配置如下:
- 安装好nginx;
- 提供一个静态的.png资源
#源码编译nginx-->准备好nginx的源码包
[root@node0 ~]# cd /usr/local/src/
[root@node0 src]# ls
nginx-1.16.1.tar.gz#安装必要的依赖
[root@node0 src]# yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel#解压-->预编译-->编译-->安装#解压
[root@node0 src]# tar -xf nginx-1.16.1.tar.gz
[root@node0 src]# cd nginx-1.16.1/#预编译
[root@node0 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module #编译、安装
[root@node0 nginx-1.16.1]# make && make install#如果喜欢的话就做一个启动脚本
[root@node0 nginx-1.16.1]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile =/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target#给脚本赋予权限
[root@node0 nginx-1.16.1]# chmod 777 /usr/lib/systemd/system/nginx.service #然后加入systemd管理
[root@node0 nginx-1.16.1]# systemctl daemon-reload
[root@node0 nginx-1.16.1]# systemctl start nginx.service && systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.#最后验证一下nginx启动了没有
[root@Test0 nginx-1.16.1]# ps -ef | grep nginx
root 11721 1 0 23:14 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
............
#用另外一台服务器来验证nginx安装是否有问题,-->显示ok就没问题了
[root@Node1 ~]# curl -I 192.168.75.130
HTTP/1.1 200 OK
..........
- 上面只能说明nginx是已经安装好了,还没有配置;
- 等两台TomCACT服务器都部署好了,就可以进行配置
–>TomCAT-1服务器配置如下:
- 安装TomCAT服务
- 首先准备JDK,配置基础环境
#准备源码包
[root@Node1 src]# ls
apache-tomcat-9.0.7.tar.gz jdk1.8.0_131.tar.gz#解压jkd的包
[root@Node1 src]# tar -xf jdk1.8.0_131.tar.gz #并且改革名字-->方便好敲点
[root@Node1 src]# mv jdk1.8.0_131 jdk#配置jdk的路径脚本-->因为profile里面需要用到
[root@Node1 src]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/src/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH#刷新一下环境变量
[root@Node1 src]# source /etc/profile.d/java.sh #检查一下java能否使用
[root@Node1 src]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)#到这里java环境部署完成
- 接下来部署tomcat服务
- 解压包,并且移动到指定目录
- 部署好命令
- 启动tomcat验证
#解压包
[root@Node1 src]# ls apache-tomcat-9.0.7.tar.gz
apache-tomcat-9.0.7.tar.gz
[root@Node1 src]# tar -xf apache-tomcat-9.0.7.tar.gz #然后把tomcat的解压包移动到/usr/local/并且改名为tomcat
[root@Node1 src]# mv apache-tomcat-9.0.7 /usr/local/tomcat#做好命令快捷键-->简化操作
[root@Node1 ~]# ln -s /usr/local/tomcat/bin/* /usr/local/bin/#直接启动tomcat
[root@Node1 ~]# startup.sh
.......#看到下面的信息代表启动成功
Tomcat started.
.......#然后验证一下:#首先查看进程-->8080端口是否启动
[root@Node1 ~]# ps -ef |grep :8080
root 7478 7151 0 17:16 pts/0 00:00:00 grep --color=auto :8080
- 浏览器直接访问–>看到页面代表部署成功
- http://192.168.75.131:8080/
- 到这里为止,Tomcat-1的服务器已经搭建好了
- 接下来就要配置一下资源–>用于动静分离
#创建一个资源存放的路径
[root@Node1 ~]# mkdir -p /usr/local/tomcat/webapps/aa#编写资源的代码-->简单理解就是创建一个动态的页面
[root@Node1 ~]# vim /usr/local/tomcat/webapps/aa/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP liangjiawei-01 page </title>
</head>
<body>
<% out.println("动态页面-1,http://www.liangjiawei.com");%>
</body>
</html>#创建好资源之后,也得修改配置文件
[root@Node1 ~]# cp -a /usr/local/tomcat/conf/server.xml{,.bak}
..............#多添加一台虚拟主机
164 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
165 <Context docBase="/usr/local/tomcat/webapps/aa" path="" reloadable="true" />
166 </Host>#然后重启服务
[root@Node1 ~]# shutdown.sh
[root@Node1 ~]# startup.sh #被忘了验证一下配置
- 浏览器直接访问
- http://192.168.75.131:8080/aa/
- 看到以下界面代表成功;
–>接下来就部署第二台Tomcat-2
步骤和第一台一模一样
安装TomCAT服务
- 首先准备JDK,配置基础环境
#准备源码包
[root@Node2 src]# ls
apache-tomcat-9.0.7.tar.gz jdk1.8.0_131.tar.gz#解压jkd的包
[root@Node2 src]# tar -xf jdk1.8.0_131.tar.gz #并且改革名字-->方便好敲点
[root@Node2 src]# mv jdk1.8.0_131 jdk#配置jdk的路径脚本-->因为profile里面需要用到
[root@Node2 src]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/src/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
~ #刷新一下环境变量
[root@Node2 src]# source /etc/profile.d/java.sh #检查一下java能否使用
[root@Node2 src]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)#到这里java环境部署完成
- 接下来部署tomcat服务
- 解压包,并且移动到指定目录
- 部署好命令
- 启动tomcat验证
#解压包
[root@Node2 src]# ls apache-tomcat-9.0.7.tar.gz
apache-tomcat-9.0.7.tar.gz
[root@Node2 src]# tar -xf apache-tomcat-9.0.7.tar.gz #然后把tomcat的解压包移动到/usr/local/并且改名为tomcat
[root@Node2 src]# mv apache-tomcat-9.0.7 /usr/local/tomcat#做好命令快捷键-->简化操作
[root@Node2 src]# ln -s /usr/local/tomcat/bin/* /usr/local/bin/#直接启动tomcat
[root@Node2 src]# startup.sh
.......#看到下面的信息代表启动成功
Tomcat started.
.......#然后验证一下:#首先查看进程-->8080端口是否启动
[root@Node2 src]# ps -ef | grep :8080
root 7325 7144 0 17:36 pts/0 00:00:00 grep --color=auto :8080
- 浏览器直接访问–>看到页面代表部署成功
- http://192.168.75.132:8080/
- 到这里为止,Tomcat-1的服务器已经搭建好了
- 接下来就要配置一下资源–>用于动静分离
#创建一个资源存放的路径
[root@Node2 src]# mkdir /usr/local/tomcat/webapps/bb/#编写资源的代码-->简单理解就是创建一个动态的页面
[root@Node2 src]# vim /usr/local/tomcat/webapps/bb/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP LiangGaRy-02 page </title>
</head>
<body>
<% out.println("动态页面-2,http://blog.liangjiawei.net");%>
</body>
</html>#创建好资源之后,也得修改配置文件
[root@Node2 ~]# cp -a /usr/local/tomcat/conf/server.xml{,.bak} [root@Node2 src]# vim /usr/local/tomcat/conf/server.xml
...............#多添加一台虚拟主机#在大概是164行的空位添加一台主机<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/bb" path="" reloadable="true" /></Host>#然后重启服务
[root@Node2 ~]# shutdown.sh
[root@Node2 ~]# startup.sh #被忘了验证一下配置
- 浏览器直接访问
- http://192.168.75.132:8080/bb/
- 看到以下界面代表成功;
–>回到nginx-server端配置
- 编写一个静态页面的配置
#编写一个静态的资源网页
[root@node0 nginx-1.16.1]# vim /usr/local/nginx/html/index.html
<html><body><h1>this is static</h1></body></html>#自己尝试访问一下
[root@node0 nginx-1.16.1]# curl localhost
<html><body><h1>this is static</h1></body></html>
- 创建一个目录,用于存放png图片
- 注意自己的路径,默认路径就好了
- /usr/local/nginx/html/static
#创建一个目录
[root@node0 nginx-1.16.1]# cd /usr/local/nginx/
[root@node0 nginx]# mkdir html/static/
[root@node0 nginx]# cd html/static/#上传一张图片
[root@node0 static]# ls
0b14de866d2e6c498769803543c384cc.jpeg#改名仅仅为了方便而已
[root@node0 static]# mv 0b14de866d2e6c498769803543c384cc.jpeg 1.jpeg
- 修改nginx的配置文件
- 让页面能够加载图片
#修改配置文件
[root@node0 static]# cp /usr/local/nginx/conf/nginx.conf{,.bak}
..............#在server模块中,在location /这个下面在添加一个location;#注意,一定要在location /{}外添加如下信息location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root /usr/local/nginx/html/static;expires 10d;}
...........
#检测一下配置文件
[root@node0 static]# ln -s /usr/local/nginx/sbin/* /usr/bin/
[root@node0 static]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful#重载配置文件验证
[root@node0 static]# nginx -s reload
- 如果看到页面就代表正常
- http://192.168.75.130/1.jpeg
- 配置负载均衡
- 这里就可以使用upstream
#修改配置文件
[root@node0 static]# vim /usr/local/nginx/conf/nginx.conf
...........
#在http模块下,server模块之上配置如下信息,大概是32行左右添加就可以了34 upstream tomcat_group {35 server 192.168.75.131:8080 weight=1;36 server 192.168.75.132:8080 weight=1;37 }
#然后还需要添加一个location的信息#定位如果是访问动态资源就走upstream的后端tomcat服务#选项参数说明:#-->proxy_pass:这个是指定真实处理请求的服务器群,就是上面upstream指定的群组#-->proxy_set_header HOST $host;:记录请求头的主机信息#--> proxy_set_header X-Real-IP $remote_addr:记录真实的IP地址#-->proxy_set_header X-Forwarded-For:记录转发的信息;location ~ .*\.jsp$ {proxy_pass http://tomcat_group;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#检测一下配置文件-->然后重启
[root@node0 ~]# nginx -t#重启nginx
[root@node0 ~]# nginx -s reload
验证:
直接浏览器访问nginx-server的ip
- http://192.168.75.130/
- http://192.168.75.130/
然后在尝试访问以.jsp结尾的资源
- http://192.168.75.130/index.jsp
Nginx的动静分离实验相关推荐
- nginx+tomcat动静分离结构
本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...
- Docker构建Nginx+Tomcat动静分离架构
随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1) ...
- tomcat 如何跳转到apache_第二十期:基于tomcat部署jforum站点,并结合nginx实现动静分离...
一. 基于tomcat部署站点,并nginx实现动静分离 1.1 Tomcat部署 1.1.1 配置jdk #二进制安装 #解压 [root@node2local]# tar -xzvf jdk ...
- Nginx——配置动静分离
Nginx的动静分离是把不同的资源放到不同的服务器中,动态资源可以放到tomcat中,而静态资源可以放到其他位置 所谓动静分离,是为了加快网站的解析速度,把动态页面和静态页面分别部署到不同的服务器上来 ...
- K8S高可用集群架构部署 dashborad插件部署 Nginx实现动静分离 K8S在线升级
K8S官方文档 注意:该集群每个master节点都默认由kubeadm生成了etcd容器,组成etcd集群.正常使用集群,etcd的集群不能超过一半为down状态. docker的namespace: ...
- 使用nginx实现动静分离的负载均衡集群
架构图 本次要实现的架构图: 工作中我们希望这样: 静态文件处理:可以使用nginx 或apache 动文件处理: apache ,tomcat 图片文件处理: squid 我们可以使用nginx实现 ...
- nginx使用-动静分离
一.概念 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,简单的可以理解成使用 Nginx处理静态页面 ...
- 【网络编程】利用Nginx实现动静分离--分离动态请求和静态请求(Nginx+Tomcat)
文章目录 一.什么是动静分离 1.1 动静分离原理 1.2 Nginx实现动静分离的优势 二.动静分离的实现 2.1 先了解一下location语法 2.1.1 nginx模块 2.1.2 Nginx ...
- nginx的动静分离
nginx的动静分离 nginx动静分离的原理 nginx的动静分离,指的是由nginx服务器对用户的请求进行分类转发,静态资源(html,css,js,images)由静态资源服务器处理(nginx ...
最新文章
- PHP 每小时抽奖,php分时间段的抽奖程序代码
- C++实现拓扑排序(邻接表存储,栈实现)
- python中sn的意思_python获取内存SN编号等信息
- 分区裁剪 oracle,[讨论]分区表并行和剪裁的困惑
- java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解
- ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载
- js 负数移位运算究竟如何进行
- STM32的串口DMA收发以及双缓冲区的实现
- hdu - 4647 - Another Graph Game
- 拓端tecdat|R语言如何做马尔可夫转换模型markov switching model
- 学习笔记——正则匹配方法整理
- GD32f103介绍第二章
- 中小企业财务管理的重要性
- 数据库及对应数据文件使用查询
- 如何录制计算机上的音乐,电脑上听歌曲,怎么把它录下来呢
- python 拼音相似度_人工智能之pypinyin jieba gensim 之最简单的相似度实现
- 国际快递中常见的国家省份名称中英文对照表
- java 篮球队淘汰赛冠军_《黑白2》口袋世界淘汰赛挑战各馆主冠军方法
- matlab 三维立体图,利用matlab将三维数据画成三维立体图
- 随手记:小程序相关知识点
热门文章
- Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计
- 计算机无法安装ae,Windows10系统AE软件无法安装的处理方法介绍
- 基于 Go Fyne 实现的护眼助手
- 天下3最新服务器列表,天下3_网络游戏专区_腾讯游戏频道
- 联想微型计算机C200配置,联想C200一体电脑基本配置
- CM4尺寸4G mini模组高通版GPS功能测试
- java 监听jtextfield_java JTextField之监听器
- ios pickerview选择城市
- windows7系统损坏修复_UEFI?安装纯净的 Windows 7/10 系统
- 量子力学 一 基础4 态空间、对偶与线性算符