10.Nginx实现动静分离和资源分离

Nginx动静分离和资源分离


Nginx实现动静分离


​ 动静分离,通过中间件将动静分离和静态请求进行分离; 通过中间件将动态请求和静态请求分离,可以建上不必要的请求消耗,同事能减少请求的延时。 通过中间件将动态请求和静态请求分离,逻辑图如下:

在这里插入图片描述

好处:动静分离后,即使动态服务不可用,但静态资源不会受到影响。

部署静态网页

#编写配置文件
[root@web02 code]# vim /etc/nginx/conf.d/4.conf
server{
        listen 80;
        server_name pic.xxx.com;
        root /code;
        index index.html;

        location ~*.*\.(jpg|png|git)$ {
                root /code/images;
        }
}

#创建站点目录
[root@web02 code]# mkdir /code/images

#准备索引文件
[root@web02 code]# echo '这里是前端页面' > /code/index.html
[root@web02 code]# cat /code/index.html
这里是前端页面

#检查
[root@web02 code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

#写入本地DNS域名解析
10.0.0.8 pic.xxx.com

在这里插入图片描述

#设置格式utf-8
[root@web02 code]# vim /etc/nginx/conf.d/4.conf
server{
        listen 80;
        server_name pic.xxx.com;
        root /code;
        index index.html;
        charset utf-8;
        location ~*.*\.(jpg|png|git)$ {
                root /code/images;
        }
}

在这里插入图片描述

#准备一个图片

# 将图片移动只站点目录
mv 1.png /code/images/
# 浏览器访问
http://pic.xxx.com/1.png

在这里插入图片描述

部署动态网页

tomcat ------ jdk
java的容器
java代码比喻是水
tomcat就是java的水的容器
C语言 GCC
jdk java的环境
# 安装java环境 openjdk
[root@web02 code]# yum install -y tomcat

# 启动tomcat
[root@web02 ~]# systemctl start tomcat

# 检查端口
[root@web02 ~]# netstat -lntup | grep 8080

# tomcat的站点目录
/usr/share/tomcat/webapps

# 部署后端代码 需要在站点目录地下创建一个名为ROOT的目录
# 将代码放入ROOT目录下
mkdir /usr/share/tomcat/webapps/ROOT

# 将代码放入站点目录下
[root@web02 images]# vim  /usr/share/tomcat/webapps/ROOT/test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
    <HEAD>
        <TITLE>带你测智商 Page</TITLE>
    </HEAD>
    <BODY>
        <%
            Random rand = new Random();
            out.println("<h1>你的智商:<h1>");
            out.println(rand.nextInt(99)+100);
        %>
    </BODY>
 </HTML>

# 重启tomcat
systemctl restart tomcat

# 浏览器访问
10.0.0.8:8080/test.jsp

在这里插入图片描述

在代理上面整合资源

# 安装nginx
yum install -y nginx

# 整合资源配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/zh.conf
upstream static {
        server 172.16.1.8:80;
}
upstream java {
        server 172.16.1.8:8080;
}
server {
        listen 80;
        server_name pic.xxx.com;
        location ~* \.(jpg|png|gif)$ {
                proxy_pass http://static;
                proxy_set_header Host $http_host;
        }
        location ~ \.jsp {
                proxy_pass http://java;
                proxy_set_header Host $http_host;
        }
}
# 检测语法
[root@lb01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 本地DNS解析
10.0.0.5 pic.xxx.com
#
pic.xxx.com/1.png
http://pic.xxx.com/test.jsp

整合资源

upstream static {
	server 172.16.1.7:80;
}
upstream java {
	server 172.16.1.8:8080;
}

server {
    listen 80;
    server_name pic.xxx.com;
    location / {
        root /code;
        index index.html;
    }
    location ~* \.(jpg|png|gif)$ {
        proxy_pass http://static;
        proxy_set_header Host $http_host;
    }
    location ~ \.jsp {
        proxy_pass http://java;
        proxy_set_header Host $http_host;
    }
}

在这里插入图片描述

mkdir -p /code
vim /code/index.html
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>跨域访问</title>
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
    $.ajax({
    type: "GET",
    url: "http://pic.xxx.com/test.jsp",
    success: function(data){
    	$("#get_data").html(data)
    },
    error: function() {
    	alert("哎呦喂,失败了,回去检查你服务去~");
    }
    });
});
</script>
    <body>
        <h1>曾老湿带你测试动静分离</h1>
        <img src="http://pic.xxx.com/1.png">
        <div id="get_data"></div>
    </body>
</html>

Nginx实现资源分离


要用三台web和一个代理

web端配置

#web01
[root@web01 conf.d]# vim pc.conf
server{
        listen 80;
        server_name pc.com;
        root /code/pc;
        charset utf-8;
        index index.html;
}
#创建站点目录和编译文本文件
[root@web01 conf.d]# mkdir -p /code/pc
[root@web01 conf.d]# echo '我是PC' > /code/pc/index.html
#检查成功并重启
[root@web01 conf.d]# nginx -t
[root@web01 conf.d]# systemctl restart nginx
#写入本地DNS域名解析



#web02
[root@web02 conf.d]# vim ios.conf 
server{
        listen 80;
        server_name ios.com;
        root /code/ios;
        charset utf-8;
        index index.html;
}
#创建站点目录和编译文本文件
[root@web02 conf.d]# mkdir -p /code/ios
[root@web02 conf.d]# echo '我是ios' > /code/ios/index.html
#检查成功并重启
[root@web02 conf.d]# nginx -t
[root@web02 conf.d]# systemctl restart nginx
#写入本地DNS域名解析



#web03
[root@lb01 conf.d]# vim az.conf 
server{
        listen 80;
        server_name az.com;
        root /code/az;
        charset utf-8;
        index index.html;
}
#创建站点目录和编译文本文件
[root@web03 conf.d]# mkdir -p /code/az
[root@web03 conf.d]# echo '我是安卓' > /code/az/index.html
#检查成功并重启
[root@web03 conf.d]# nginx -t
[root@web03 conf.d]# systemctl restart nginx
#写入本地DNS域名解析

在这里插入图片描述

配置代理

#lb02
[root@lb02 ~]# vim /etc/nginx/conf.d/jq.conf
upstream pc{
        server 172.16.1.7:80;
}

upstream andriod{
        server 172.16.1.5:80;
}

upstream ios{
        server 172.16.1.8:80;
}

server{
        listen 80;
        server_name jq.com;

        location /{
                if ($http_user_agent ~* "Android") {
                        proxy_pass http://andriod;
                }
                if ($http_user_agent ~* "Iphone") {
                        proxy_pass http://ios;
                }
                       proxy_pass http://pc;
        }
}

#检查成功并重启
[root@lb02 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb02 ~]# systemctl restart nginx
#写入本地DNS域名解析

在这里插入图片描述

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值