Nginx负载均衡、动静分离和高可用

一、 Nginx负载均衡

  1. 什么是Nginx
    Nginx是一个高性能的HTTP和反向代理服务器,具有内存少、高并发能力强特点。
  2. 静态资源与动态资源区分
    (1) 静态资源主要是不需要服务器、不经常变动的资源。
    ex: js、png、css…
    (2) 动态资源相对于前者就有了数据上的交互。换句话讲,用户在页面递交一个请求经过服务器到达我们的Redis或者Oracle数据库中去。
  3. 公司现在是否打成的war包中包含js、jpg、html、css
    我们公司现在是这样的。
    ex: http://127.0.0.1:8080/项目名/css/button.css
  4. 不动静分离的坏处
    那么当我们每次访问网站请求静态资源都会去后台服务器进行下载
    ex: 阿里的开销最大的是网络带宽、流量
  5. 为何要动静分离
    如果我们用到动静分离、将动态资源和静态资源隔离开,到我们服务器下载静态资源,当下载完成之后,会把静态资源保存到本地浏览器缓存;
    当我们再次想要访问静态资源时,不会在去服务器请求,直接到本地浏览器缓存中去拿(这就是第一次访问慢,接着越访问越快的原因)

(一) Nginx动静分离案例

  1. 配置静态资源
[root@VM_0_12_centos agent]# 
server {
  listen 50000;
  server_name localhost;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root html;
  }

  proxy_set_header Host $host:50000;
  proxy_set_header X-Real-Ip $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;

  location / {
    root /var/local/static;
    index index.html index.htm;
  }
  
  #location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
  #{
   #root /var/local/static;
   #expires 30d;
  #}
  
  location ~* .*\.(jpg|png|gif|jpeg)$
  {
    root /var/local/static/images;
  }

(1) 我们进入/var/local/static目录下先新建一个index.html,作为浏览器地址访问的首页

[root@VM_0_12_centos static]# echo "welcome to my nginx page" > /var/local/static/index.html

(2) 新建/var/local/static/images目录,并上传一张chichi.jpeg静态文件到此目录
(3) 进入到/usr/local/nginx/sbin目录

[root@VM_0_12_centos sbin]# ./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@VM_0_12_centos sbin]# ./nginx -s reload
[root@VM_0_12_centos sbin]# ps -ef|grep nginx 
root     25603 25976  0 10:20 ?        00:00:00 nginx: worker process
root     25877  6808  0 10:20 pts/0    00:00:00 grep --color=auto nginx
root     25976     1  0 4月18 ?       00:00:00 nginx: master process ./nginx

(4) 浏览器地址栏访问:
http://111.229.96.161:50000/
在这里插入图片描述
http://111.229.96.161:50000/chichi.jpeg
在这里插入图片描述

  1. 接下来做动静分离,将.jsp、.java等内容写在web上,web配置动态资源
[root@VM_0_12_centos ~]# cd /usr/local/tomcat-8.5.50/webapps/ROOT
[root@VM_0_12_centos ROOT]# touch javaTest.jsp
[root@VM_0_12_centos ROOT]# vi javaTest.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>
[root@VM_0_12_centos tomcat-8.5.50]# cd bin
[root@VM_0_12_centos bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat-8.5.50
Using CATALINA_HOME:   /usr/local/tomcat-8.5.50
Using CATALINA_TMPDIR: /usr/local/tomcat-8.5.50/temp
Using JRE_HOME:        /usr/local/java/jdk1.8.0_11
Using CLASSPATH:       /usr/local/tomcat-8.5.50/bin/bootstrap.jar:/usr/local/tomcat-8.5.50/bin/tomcat-juli.jar
Tomcat started.
[root@VM_0_12_centos bin]# ps -ef|grep tomcat
root     31904     1 71 10:41 pts/0    00:00:08 /usr/local/java/jdk1.8.0_11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat-8.5.50/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat-8.5.50/bin/bootstrap.jar:/usr/local/tomcat-8.5.50/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat-8.5.50 -Dcatalina.home=/usr/local/tomcat-8.5.50 -Djava.io.tmpdir=/usr/local/tomcat-8.5.50/temp org.apache.catalina.startup.Bootstrap start
root     32290  6808  0 10:41 pts/0    00:00:00 grep --color=auto tomcat

浏览器访问地址:http://111.229.96.161:8080/javaTest.jsp
在这里插入图片描述

  1. 在Nginx上做负载均衡调度
[root@VM_0_12_centos agent]# vi 50000.port 
server {
  listen 50000;
  server_name localhost;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root html;
  }

  proxy_set_header Host $host:50000;
  proxy_set_header X-Real-Ip $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;

  location / {
     root /var/local/static;
     index index.html index.htm;
  }
  
  location ~* .*\.(jpg|png|gif|jpeg)$
  {
    root /var/local/static/images;
  }

  location ~ \.jsp {
    proxy_pass http://javaweb;
    proxy_set_header Host $http_host;
  }
}

[root@VM_0_12_centos agent]# vi upstream.host
upstream javaweb {
   server 111.229.96.161:8080;
}

浏览器访问地址:在这里插入图片描述
在这里插入图片描述

  1. Nginx负载均衡整合动态和静态的html文件,在html文件中将动态资源和静态资源显示在同一个页面上。
[root@VM_0_12_centos static]# vi 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://111.229.96.161:50000/javaTest.jsp",
        success: function(data){
                $("#chi_data").html(data)
        },
        error: function() {
                alert("哎呦喂,失败了,回去检查你服务去~");
        }
        });
});
</script>
<body>
    <h1>迟迟带你测试动静分离</h1>
    <img src="http://111.229.96.161:50000/chichi.jpeg">
    <div id="chi_data"></div>
</body>
</html>

在这里插入图片描述
后续继续更新。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值