• Nginx 动静分离概述


    Nginx 动静分离是什么

    Nginx 动静分离,指的是静态资源请求由 Nginx 处理,动态资源请求由 php-fpm 处理或 tomcat 处理,tomcat 服务本身是用来处理 JSP 代码的,同时 tomcat 也能处理静态资源,但 tomcat 本身处理静态效率不高,还会带来资源开销,动静分离的架构中让 tomcat 只处理JSP代码 。

    在应用服务器上, Nginx 根据客户端请求 URI 判断请求的是否为静态资源,如果请求的 URI 包含了 JPG、PNG 等字段,则直接由应用服务器处理(部署 Nginx);如果请求的 URI 包含了 .php、.jsp 等字段,则由后端处理动态请求的应用服务器处理(部署 Tomcat)。

    Nginx 动静分离配置

    将动态请求和静态请求分配到不同的服务器,如获取数据库信息的请求分配到动态请求服务器,获取静态资源图片的请求分配到静态请求服务器,使用 Nginx 负载均衡代理实现动静分离,模拟环境如下:

    服务器主机名 作用 服务 IP
    lb01 负载均衡 nginx proxy 10.0.0.5
    web01 处理静态资源请求,并代理后端服务器 nginx static & proxy 10.0.0.7
    web02 处理动态资源请求 tomcat server 10.0.0.8

    暂时忽略负载均衡服务器配置,应用服务器(部署 Nginx)配置如下:

    # 应用服务器 Nginx 配置文件
    [root@web01 ~]# cat /etc/nginx/conf.d/dynamic_static.conf 
    upstream dynamic {
    	server 172.16.1.8:8080;
            #server 172.16.1.9:8080;
    }
    server {
    	listen 80;
    	server_name test.com;
    	root /code;
    	index index.html;
    
    	location ~* .(jpg|png|gif)$ {
    		root /code/static/images/;
    	}
            location ~ .jsp {
                    proxy_pass http://dynamic;
            }
    }
    
    # 静态资源目录
    [root@web01 ~]# tree /code/
    /code/
    ├── index.html
    └── static
        └── images
            └── 1.jpg
    
    # 前端代码,使用 Ajax 获取 .jsp 文件
    [root@web01 ~]# cat /code/index.html 
    <html lang="en">
    <head>
            <meta charset="UTF-8" />
            <title>AJAX 实现动静分离</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://test.com/random.jsp",
            success: function(data){
                    $("#get_data").html(data)
            },
            error: function() {
                    alert("动静分离没有实现!");
            }
            });
    });
    </script>
            <body>
                    <h1>动静分离测试</h1>
                    <img src="http://test.com/1.jpg">
                    <div id="get_data"></div>
            </body>
    </html>
    
    [root@web01 ~]# nginx -s reload 
    

    应用服务器(部署 Tomcat)配置如下:

    # 动态资源服务器,需要安装 tomcat
    [root@web02 ~]# yum -y install tomcat
    
    # 在 webapps 下创建一个 ROOT 目录,存放 .jsp 文件
    [root@web02 ~]# mkdir -p /usr/share/tomcat/webapps/ROOT
    
    # 编辑一个生成随机数的 .jsp 文件
    [root@web02 ROOT]# cat random.jsp 
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <HTML>
        <HEAD>
            <TITLE>zzzwqh JSP Page</TITLE>
        </HEAD>
        <BODY>
            <%
                Random rand = new Random();
                out.println("<h1>Random:<h1>");
                out.println(rand.nextInt(99)+100);
            %>
        </BODY>
    </HTML>
    
    [root@web02 ~]# systemctl start tomcat
    

  • 相关阅读:
    IIS配置和发布网站
    单点登录的理论原理(一)
    Tomcat乱码或异常
    浅谈Tomcat 、Apache、 Nginx的区别及优缺点
    KETTLE数据互交
    Centos7防火墙配置
    【linux】查看某个进程PID对应的文件句柄数量,查看某个进程当前使用的文件句柄数量
    this license XXXXXX has been cancelled
    Ubuntu16.04安装Redis
    redis的 rdb 和 aof 持久化的区别
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13028089.html
Copyright © 2020-2023  润新知