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

    第一步:nginx构建

    第二步:Tomcat构建

    1.Tomcat基础点

    (1)Tomcat 是基于java开发的web容器,用来发布java代码和jsp网页。

    (2)开发人员开发java web网站,使用Tomcat容器发布和解析,用户通过浏览器实现访问。

    (3)发布java程序,需要提前配置好JDK环境。

    (4)JDK是java开发工具包(SDK)和java程序运行环境(JRE);JDK是java开发的核心组件。

    (5)java运行环境(JRE)包括:JVM+JAVA类和库;

        java开发工具包(SDK)包括:JAVAC、JAVA工具

    (6)开发人员开发的java程序,是源码文件,默认不能直接使用;需要经过JACAC(java编译器),将源码文件编译生成java字节码文件。

    (7)java字节码文件,可以放在jre环境中去运行(java运行时的环境Tomcat);通过JVM解析java字节码文件,从而提供给CPU或系统调用,用户可以通过其他渠道访问。

    2.yum安装java jdk软件工具包

    yum install java-1.8.0* -y
    #
    yum 安装java jdk 不用配置变量

    3.上传或下载Tomcat;二进制版的tomcat软件包不用编译,解压后可以直接使用

    1 rz
    2 tar -xzvf  tomcat

    4.将解压后的tomcat二进制包移动至/usr/local/tomcat,并拷贝/usr/local/tomcat至/usr/local/tomcat-1;相当于同一台服务器有两个tomcat容器;

    1 mv tomcat  /usr/local/
    2 cp /usr/local/tomcat  /usr/local/tomcat-1

    5.启动tomcat,查看tomcat的端口号;修改tomcat-1端口号,并开启tomcat-1;

    1 cd /usr/local/tomcat/bin
    2 ./startup.sh
    3 netstat -antp |grep java
    4 cd /usr/local/tomcat-1
    5 sed -i  's#8080#8081#;s#8005#8006#;s#8009#8010#'  conf/server.xml
    6 ./bin/startup.sh

    6.修改tomcat默认网页

    1 cd /usr/local/tomcat/webapps/ROOT
    2 cat >> index.jsp <<eof 3 <html> 4 <body> 5 <h1>tomcat</h1> 6 </body> 7 </html> 8 eof

    7.修改tomcat-1默认网页

    1 cd /usr/local/tomcat-1/webapps/ROOT
    

    2 cat >> index.jsp <<eof 3 <html> 4 <body> 5 <h1>tomcat-1</h1> 6 </body> 7 </html> 8 eof

    第三步:Nginx动静分离配置

    1.动静分离简介

    (1)是把静态请求和动态请求分开,并不是单纯的静态页面和动态页面分离。

    (2)可以使用Nginx处理静态页面,用Tomcat、PHP、Resin、ASP处理动态页面。

    (3)主流方案:纯粹的把静态文件独立成单独的域名,放在独立的服务器上。

    (4)其他方案:动态文件跟静态文件混合在一起发布,通过Nginx分开。

    2.负载均衡简介

    (1)负载:所有来自客户端的请求叫做负载。

    (2)均衡:把所有的网络请求通过代理服务器,按照一定的算法转发到后端服务器上。

    (3)硬件:FS、NetScaler

    (4)软件:LVS、Nginx、HAProxy

    3.Nginx负载均衡

    (1)Nginx收到请求时会进行判断,如果是静态,则自行处理;如果是动态,则转到后端服务器处理。

    (2)Nginx负载均衡基于upstream模块(设置在http块),需要在location块设置proxy_pass转发。

    (3)upstream块内参数:server后跟转发服务器IP地址加端口号;

        down 表示是当前server暂时不参与负载;

        weight=number 权重配置;默认1,数字越大权重越大;

        max_conns=number 限制代理服务器同时活动的最大连接数,默认0代表没限制;

        max_fails=number 连接失败的最大次数;次数到达,返回proxy_next_upstream模块定义的错误;

        fail_timeout=number 失败次数到达后,暂停服务的时间;

        backup  备用服务器,其他所有非backup机器down或者忙碌时,请求backup机器。

    4.upstream算法

    (1)轮询(默认)

        每个请求按时间顺序逐一分配到不同的后端服务器;如果后端服务器down掉,能自动剔除;

        即Round Robin ,根据Nginx配置文件中的顺序,依次把客户端的web请求分发到不同的后端服务器。

    (2)ip_hash

        每个请求按访问ip的hash结果分配,每个访客固定访问一个后端服务器,可以解决session的问题。

        ip地址的前三段作为参数加入hash函数,保证ip地址前三段相同的用户经过hash计算分配到相同的后端服务器。

    (3)url_hash

        按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

    (4)weight

        指定轮询机率,weight和访问比率成正比,用于后端服务器性能不均的情况。

    5.配置upstream块

    upstream http_test {
        server 192.168.198.111:8080  weight=2 mas_fails=2  fail_timeout=15s;
        #15s 检测时间,检测后端服务器是否正常,15秒内2次请求处理失败,就把当前主机剔除。
        server 192.168.198.112:8081  weight=1 mas_fails=2  fail_timeout=15s;
        }
        #两个后端机器都不能使用,直接给用户返回502错误。

    6.动静分离location规则添加

    location / {
        proxy_next_upstream  http_502  http_504  error  timeout  invalid_header;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP    $remote_addr;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass    http://http_test;
        }
    location ~ .*.(jsp|cgi|shtml)?$ {
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP    $remote_addr;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass    http://http_test;
        }
    location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root    /usr/local/nginx/html;
        expires    30d;
        }

    7.开启nginx服务器防火墙80端口、tomcat服务器防火墙(8080端口、8081端口、8005端口、8006端口、8009端口、8010端口)

    1 firewall-cmd --zone=public --add-port=80/tcp 
    --add-port=8080/tcp --add-port=8081/tcp
    --add-port=8005/tcp --add-port=8006/tcp
    --add-port=8009/tcp --add-port=8010/tcp
    --permanent 2 firewall-cmd --reload

    8.将静态网页配置在nginx服务器/usr/local/nginx/html;动态网页配置在tomcat服务器/usr/local/tomcat/webapps/ROOT/*

    9.配置完毕,正常访问nginx服务器;静态请求nginx服务器自行处理,动态请求通过nginx服务器转发给tomcat服务器处理;

  • 相关阅读:
    Java高并发8-计算机内存模式以及volatile,sychronized工作原理
    Java高并发7-inheritableThreadLocal实现父子线程变量同步原理
    Java高并发6-ThreadLocal内部各种方法实现原理
    Java高并发5-守护线程、ThreadLocal和死锁四个必要条件
    Java高并发4-解析volatile关键字
    AQS详解,并发编程的半壁江山
    Java 调用File的delete方法删除文件返回false
    Java 将文件夹打成压缩包 zip
    前端 文件夹上传 解决方案
    ORA-00904: "FILED_TYPE": 标识符无效
  • 原文地址:https://www.cnblogs.com/IMSCZ/p/10878388.html
Copyright © 2011-2022 走看看