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

–>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/
  • 然后在尝试访问以.jsp结尾的资源

    • http://192.168.75.130/index.jsp

Nginx的动静分离实验相关推荐

  1. nginx+tomcat动静分离结构

    本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...

  2. Docker构建Nginx+Tomcat动静分离架构

    随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1)    ...

  3. tomcat 如何跳转到apache_第二十期:基于tomcat部署jforum站点,并结合nginx实现动静分离...

    一.  基于tomcat部署站点,并nginx实现动静分离 1.1  Tomcat部署 1.1.1  配置jdk #二进制安装 #解压 [root@node2local]# tar -xzvf jdk ...

  4. Nginx——配置动静分离

    Nginx的动静分离是把不同的资源放到不同的服务器中,动态资源可以放到tomcat中,而静态资源可以放到其他位置 所谓动静分离,是为了加快网站的解析速度,把动态页面和静态页面分别部署到不同的服务器上来 ...

  5. K8S高可用集群架构部署 dashborad插件部署 Nginx实现动静分离 K8S在线升级

    K8S官方文档 注意:该集群每个master节点都默认由kubeadm生成了etcd容器,组成etcd集群.正常使用集群,etcd的集群不能超过一半为down状态. docker的namespace: ...

  6. 使用nginx实现动静分离的负载均衡集群

    架构图 本次要实现的架构图: 工作中我们希望这样: 静态文件处理:可以使用nginx 或apache 动文件处理: apache ,tomcat 图片文件处理: squid 我们可以使用nginx实现 ...

  7. nginx使用-动静分离

    一.概念 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,简单的可以理解成使用 Nginx处理静态页面 ...

  8. 【网络编程】利用Nginx实现动静分离--分离动态请求和静态请求(Nginx+Tomcat)

    文章目录 一.什么是动静分离 1.1 动静分离原理 1.2 Nginx实现动静分离的优势 二.动静分离的实现 2.1 先了解一下location语法 2.1.1 nginx模块 2.1.2 Nginx ...

  9. nginx的动静分离

    nginx的动静分离 nginx动静分离的原理 nginx的动静分离,指的是由nginx服务器对用户的请求进行分类转发,静态资源(html,css,js,images)由静态资源服务器处理(nginx ...

最新文章

  1. PHP 每小时抽奖,php分时间段的抽奖程序代码
  2. C++实现拓扑排序(邻接表存储,栈实现)
  3. python中sn的意思_python获取内存SN编号等信息
  4. 分区裁剪 oracle,[讨论]分区表并行和剪裁的困惑
  5. java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解
  6. ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载
  7. js 负数移位运算究竟如何进行
  8. STM32的串口DMA收发以及双缓冲区的实现
  9. hdu - 4647 - Another Graph Game
  10. 拓端tecdat|R语言如何做马尔可夫转换模型markov switching model
  11. 学习笔记——正则匹配方法整理
  12. GD32f103介绍第二章
  13. 中小企业财务管理的重要性
  14. 数据库及对应数据文件使用查询
  15. 如何录制计算机上的音乐,电脑上听歌曲,怎么把它录下来呢
  16. python 拼音相似度_人工智能之pypinyin jieba gensim 之最简单的相似度实现
  17. 国际快递中常见的国家省份名称中英文对照表
  18. java 篮球队淘汰赛冠军_《黑白2》口袋世界淘汰赛挑战各馆主冠军方法
  19. matlab 三维立体图,利用matlab将三维数据画成三维立体图
  20. 随手记:小程序相关知识点

热门文章

  1. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计
  2. 计算机无法安装ae,Windows10系统AE软件无法安装的处理方法介绍
  3. 基于 Go Fyne 实现的护眼助手
  4. 天下3最新服务器列表,天下3_网络游戏专区_腾讯游戏频道
  5. 联想微型计算机C200配置,联想C200一体电脑基本配置
  6. CM4尺寸4G mini模组高通版GPS功能测试
  7. java 监听jtextfield_java JTextField之监听器
  8. ios pickerview选择城市
  9. windows7系统损坏修复_UEFI?安装纯净的 Windows 7/10 系统
  10. 量子力学 一 基础4 态空间、对偶与线性算符