zoukankan      html  css  js  c++  java
  • Nginx动静分离



    nginx 动静分离


    不需要运维来做,开发做的。

    • 动态请求:该请求会调用数据库中的数据。

    • 静态请求:用户请求不会调用数据库。

    • 动态页面:后端开发写的需要调用数据库的页面(python、java、C、php)

    • 静态页面:前端开发写的不需要调用数据库。

    单台服务器动静分离

    多台服务器动静分离

    环境准备

    主机名 WanIP LanIP 角色
    web01 172.16.1.7 静态资源
    web02 172.16.1.8 动态资源tomcat
    lb01 10.0.0.5 172.16.1.5 负载均衡

    web01配置静态资源

    # 1、配置静态资源服务
    [root@web01 /etc/nginx/conf.d]# vi static.conf
    server {
            listen 80;
            server_name dj.gong.com;
            # 可以注释掉
            root /website/dj;
            index index.html;
    
    		# 匹配到图片格式结尾的内容走下面的路径
            location ~* .(jpg|gif|jpeg|png|mp4)$ {
                    root /website/dj/images;
            }
    }
    
    # 2、创建访问目录并上传文件
    [root@web01 /website]# mkdir dj/images
    
    # 3、测试访问
    

    web02配置动态资源

    # 1、安装tomcat
    [root@web02 ~]# yum -y install tomcat
    
    # 2、创建tomcat主目录
    [root@web02 ~]# cd /usr/share/tomcat/webapps/
    [root@web02 /usr/share/tomcat/webapps]# mkdir ROOT
    
    # 3、动态资源
    [root@web02 /usr/share/tomcat/webapps/ROOT]# vi java.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <HTML>
        <HEAD>
            <TITLE>JSP Page</TITLE>
        </HEAD>
        <BODY>
            <%
                Random rand = new Random();
                out.println("<h1>随机数:<h1>");
                out.println(rand.nextInt(99)+100);
            %>
        </BODY>
    </HTML>
    
    # 6、启动并开机自启
    [root@web02 ~]# systemctl start tomcat
    [root@web02 ~]# systemctl enable tomcat
    

    负载均衡配置

    # 1、编辑负载均衡的配置文件
    [root@lb01 /app/nginx/conf/conf.d]# vi upstream.conf
    server {
            listen 80;
            server_name dj.gong.com;
    
            location / {
                    root /website/dj;
                    index index.html;
            }
    	
    		# 单台服务器可以这样写,多台服务器可以卸载upstream模块里面
            location ~* .(jpg|png|gif)$ {
                    proxy_pass http://10.0.0.7;
                    proxy_set_header Host $http_host;
                    # 开启压缩,传输效率更高
                    gzip on;
            }
    
            location ~ .jsp$ {
            		# proxy_pass可以直接代理tomcat
                    proxy_pass http://10.0.0.8:8080;
                    proxy_set_header Host $http_host;
            }
    }
    
    # 2、编辑站点目录的页面
    [root@lb01 ~]# vi /website/dj/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://dj.gong.com/java.jsp",
            success: function(data){
                    $("#get_data").html(data)
            },
            error: function() {
                    alert("哎呦喂,失败了,回去检查你服务去~");
            }
            });
    });
    </script>
            <body>
                    <h1>带你测试动静分离</h1>
                    <img src="http://dj.gong.com/AM.jpg">
                    <div id="get_data"></div>
            </body>
    </html>
    
    

    资源分离

    环境准备

    主机名 WanIP LanIP 角色 端口
    web01 172.16.1.7 提供android页面 9090
    web01 172.16.1.7 提供ios页面 9091
    web01 172.16.1.7 提供pc页面 9092
    lb01 10.0.0.5 172.16.1.5 负载均衡 80

    配置资源分离

    # 1、配置资源分离,通过端口好区分
    [root@web01 /etc/nginx/conf.d]# vi resource_rep.conf
    server {
            listen 9090;
            root /website/android;
            index index.html;
    }
    
    server {
            listen 9091;
            root /website/ios;
            index index.html;
    }
    
    server {
            listen 9092;
            root /website/pc;
            index index.html;
    }
    
    # 2、创建站点目录
    [root@web01 /website]# mkdir {pc,android,ios}
    
    # 3、创建主页
    [root@web01 /website]# echo "<h1>this is pc</h1>" > pc/index.html
    [root@web01 /website]# echo "<h1>this is android</h1>" > android/index.html
    [root@web01 /website]# echo "<h1>this is ios</h1>" > ios/index.html
    
    

    配置负载均衡

    # 1、创建负载均衡的配置文件
    [root@lb01 ~]# vi /app/nginx/conf/conf.d/resource_rep.conf
    server {
            listen 80;
            server_name resource_rep.gong.com;
    
            location / {
            		# 通过判断语句来判断客户端是哪种终端,来连接哪台主机。
                    if ($http_user_agent ~* "Android") {
                            proxy_pass http://10.0.0.7:9090;
                    }
    
                    if ($http_user_agent ~* "Iphone") {
                            proxy_pass http://10.0.0.7:9091;
                    }
    				
    				# 默认使用pc,当后端机器有多台的时候可以写在upstream模块中。
                    proxy_pass http://10.0.0.7:9092;
            }
    }
    
    
    # ----------第二种写法------------
    upstream android {
            server 172.16.1.7:9090;
    }
    
    upstream iphone {
            server 172.16.1.7:9091;
    }
    
    upstream pc {
            server 172.16.1.7:9092;
    }
    
    server {
            listen 80;
            server_name sj.drz.com;
            charset 'utf-8';
    
            location / {
    
                    #如果客户端来源是Android则跳转到Android的资源;
                    if ($http_user_agent ~* "Android") {
                            proxy_pass http://android;
                    }
    
                    #如果客户端来源是Iphone则跳转到Iphone的资源;
                    if ($http_user_agent ~* "Iphone") {
                            proxy_pass http://iphone;
                    }
    
                    #如果客户端是IE浏览器则返回403错误;
                    if ($http_user_agent ~* "MSIE|Trident") {
                            return 403;
                    }
    
                    #默认跳转pc资源;
                    proxy_pass http://pc;
            }
    }
    

    需要有特定的IE浏览器的标识才能够判断。



    FBI WARNING
    QQ:1402122292 认准原创sheldon 别人叫我晓东
  • 相关阅读:
    restapi(6)- do it the functional way, 重温函数式编程
    JS模块化
    socket.io websocket
    CSS 文字换行
    webpack初识
    升级nodejs至最新
    JavaScript Promise迷你书(中文版)
    时间格式化
    npm yarn
    深入浅出MongoDB应用实战开发
  • 原文地址:https://www.cnblogs.com/gshelldon/p/13332798.html
Copyright © 2011-2022 走看看