• Nginx的安装使用----反向代理服务器


    Nginx

     代理服务器--使用比较多的为nginx代理服务器。

    1.什么是nginx

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。开源软件,服务器软件.能够支持高达 50,000 个并发连接数的响应,

    并发: 再同一时间段内处理请求的个数。tomcat并发能力大概1000. nginx的并发50000.

    1.反向代理web服务器。

    2.并发能力高

    3.占用内存小

    4.负载均衡

    现在由哪些企业正在使用nginx?

    1. 京东  2.淘宝 3.腾讯 4. 新浪 5.网易等

    2.为什么使用nginx

    在传统的Web项目中,并发量小,用户使用的少。

    所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。

    而在互联网项目下,因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题:

    1. Tomcat8 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。
    2. 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
    3. 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。
    4. 操作系统对于进程中的线程数有一定的限制:
    5. Windows 每个进程中的线程数不允许超过 2000
    6. Linux 每个进程中的线程数不允许超过 1000
    7. (在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。)
    8. Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
    9. maxThreads="150" 最大并发数
    10. minSpareThreads="10"///初始化时创建的线程数
    11. maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

    3.如何使用nginx

    (1)安装nginx软件所需的依赖插件

    1. yum install -y gcc-c++
    2. yum install -y pcre pcre-devel
    3. yum install -y zlib zlib-devel
    4. yum install -y openssl openssl-devel

    (2)把我们的nginx安装包上传到linux中并解压,推荐可以把它放在  /usr/local下

    安装包nginx官网下载

    nginx – nginxhttps://trac.nginx.org/nginx/browser

     我上传到了/usr/local,解压该压缩包

    tar -zxvf nginx-1.18.0.tar.gz

    (3)创建一个目录作为nginx的安装目录

     mkdir /usr/nginx

    (4)进入nginx的解压目录

     (5)设置nginx的安装路径为上面创建的文件夹   /usr/nginx

     ./configure --prefix=/usr/nginx

    (6) 编译并安装

    make    ----编译源码
    make install ---安装编译后的代码

     (7)进入/usr/nginx

     这就安装成功了

    nginx的目录结构

    conf: nginx配置文件的目录 很重要

    html: nginx的一些静态资源的目录。

    logs: nginx的日志文件。

    sbin: nginx的脚本目录 启动nginx的脚本

    ​ ./nginx ----启动nginx

    ​ ./nginx -s stop ---关闭nginx

    ​ ./nginx -s reload --重新加载配置文件

    (7)启动nginx

     ./nginx 开启nginx

    ./nginx -s stop 关闭nginx

    ./nginx -s reload 重新加载配置文件---修改完配置文件后使用该命

    如何查看进程

    (8) 访问nginx服务器

     如果无法访问是因为防火墙没有放行或者关闭

    firewall-cmd --add-port=80/tcp --zone=public --permanent         放行指定端口号


    systemctl stop firewalld                         关闭防火墙----慎重【关闭】 开启还会启动

     4. nginx配置文件的介绍

    配置代理的服务信息介绍:

     我们可以配置多个端口号 

    首先我们在/usr/nginx安装目录下创建一个文件夹my,里面创建一个html页面,然后我们对比下面的代码写了个81端口号

     我们可以通过nginx所在服务器的ip+81端口号就能访问到我们刚刚配置的代理服务器了

    5.nginx三大核心功能---重点

    1.反向代理

    2.负载均衡

    3.动静分离

    5.1.反向代理

    正向代理: 该服务器代理的是客户端,对于服务器来说,不知道真实客户端的ip。比如: 翻墙软件。

    反向代理: 该服务器代理的是服务端,对于客户端来说,不知道访问的真实服务器地址。 比如: nginx

     

    它反向代理了我们的项目所在的服务器ip,用户访问时访问的是nginx的代理服务器的ip,然后代理服务器负责访问我们的真实项目所在的服务器的ip,这样可以不让用户知道我们真实的服务器的ip,一定程度上也起到了保护作用 

    如何使用nginx完成反向代理

     准备一个真实项目和Tomcat服务器 并把项目部署到Tomcat.---springboot项目

     在根目录下创建一个project目录,把项目放进里面

    mkdir /project

     启动真实项目

    java -jar qy151-springboot---------.jar

    修改nginx配置文件

    cd /usr/nginx/conf

    vi nginx.conf

     重新加载nginx

     cd ../sbin

    ./nginx -s reload

    访问nginx所在服务器ip+nginx监听的端口号 

    5.2.负载均衡

    在公司里我们的项目会被运行在好几台服务器上,这些服务器运行的都是同一个东西,为的就是提高并发量。用户访问Nginx代理服务器以后,由代理服务器负责分配用户到底访问哪一个服务器,它会根据我们分配的策略来进行合理分配(默认不设置会进行轮询分配,轮询分配可以理解为发牌员的发牌)。

    (1)启动两台项目

     (2)修改nginx配置文件

     (3)重新加载配置文件

     cd /usr/nginx/sbin

    ./nginx -s reload

     (4)访问

    根据上面的配置,我们创建了一个集群,名称为ban151,集群中一共由两个服务,相当于两台服务器(因为只有一台电脑,所以只能用端口号的不同来区别这两个服务器,真正使用时这些服务器的ip都不相同)。然后让我们的nginx直接代理这个集群。用户访问nginx的代理ip:81,nginx就会以轮询的方式分配服务器。

     nginx负载均衡的策略:

    默认负载均衡的策略为轮询策略。

    1)、轮询(默认)

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

    2)、weight    值越大权重越大

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

    3)、ip_hash

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

    4)、fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    5)、url_hash(第三方)

    5.3.动静分离

    动静分离就是让静态资源由我们的nginx来管理,这样当我们修改静态资源时,只是修改了代理服务器上的内容,而不是每一个真实服务器的内容都要修改,这样大大节省了效率。

    (1)为什么要使用动静分离

     

     (2)如何使用nginx搭建动静分离

    将springboot项目中的static文件提取出来,将不带static文件的项目打包成jar,放到linux中(一般都放在 /project中),然后将static文件放到nginx的根目录下(/usr/nginx/)。然后修改我们的配置文件:

    配置了一个server:

    把项目中的静态资源放入nginx安装路径下,删除项目中的静态资源 

     

    重新加载配置文件

    ./nginx -s reload

    运行项目(java -jar 工程),如果我们直接访问真实服务器地址,静态资源无法加载,但是通过nginx代理服务器访问项目,静态资源就可以加载。这就实现了我们的动静分离的原则。

    这里涉及到springboot框架的一个小知识点,spingboot中的tomcat不支持jsp模板引擎,springboot中templates包下的页面只能使用html,也只能被重定向到该页面,无法通过浏览器直接访问。

     

     

     

     

    6. nginx的高可用

    我们的Nginx虽然承受并发的能力非常强,但不排除由意外情况导致我们的nginx会宕机。为了尽可能使我们的项目正常运行,这时我们可以启用备胎计划,也就是再搞一台服务器当做代理服务器,这两台代理服务器之间有一个主从关系。平常我们的备胎代理服务器不会使用,当标记为MASTER的主代理服务器宕机了,我们的被标记为BACKUP的从代理服务器就可以成功上位,充当MASTER的位置实现代理功能,当MASTER的代理服务器正常运行以后,BACKYUP就退居二线,不再使用。
     

     准备条件:

    1.192.168.19.151---- master主节点
    2.192.168.18.152---->backup从节点

    检查:

    两台linux是否可以正常启动nginx

    两台linux都安装keepalived

    yum -y install keepalived  安装keepalived
    rpm -q -a keepalived 查看本地是否安装keepalived

    默认keepalived的配置文件在    /etc/keepalived下

    把keepalive的配置文件覆盖---两台机器  

    1. global_defs {
    2. notification_email {
    3. acassen@firewall.loc
    4. failover@firewall.loc
    5. sysadmin@firewall.loc
    6. }
    7. notification_email_from Alexandre.Cassen@firewall.loc
    8. smtp_ server 192.168.19.152
    9. smtp_connect_timeout 30
    10. router_id 192.168.19.152
    11. }
    12. vrrp_script chk_http_ port {
    13. script "/usr/local/src/nginx_check.sh"
    14. interval 2
    15. weight 2
    16. }
    17. vrrp_instance VI_1 {
    18. state BACKUP
    19. interface ens33
    20. virtual_router_id 51
    21. priority 90
    22. advert_int 1
    23. authentication {
    24. auth type PASS
    25. auth pass 1111
    26. }
    27. virtual_ipaddress {
    28. 192.168.19.50
    29. }
    30. }

     把启动脚本放入指定目录 /usr/local/src/        文件名为nginx_check.sh

    1. #!/bin/bash
    2. # 检查是否开启nginx
    3. A=`ps -C nginx --no-header |wc -l`
    4. if [ $A -eq 0 ];then
    5. # 开启nginx nginx脚本所在的路径
    6. /usr/nginx/sbin/nginx
    7. sleep 2
    8. # 开启nginx失败 则执行关闭keepalived
    9. if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    10. pkill -9 keepalived
    11. fi
    12. fi

     或

     这个需要先安装killall

    yum install psmisc   

    然后启动nginx和keepalived

    ./nginx 
    systemctl start keepalived

    测试     这里的地址为虚拟ip的地址。

     测试从代理服务器 有没有起到作用

    主nginx的nginx关闭:

    nginx -s stop
    systemctl stop keepalived

    当我们MASTER机的nginx stop运行,脚本启动,同时关闭了我们的keepalived。

    这时负责代理功能的服务器就是标记为BACKUP的我们的从服务器。当主代理服务器正常运行时,负责代理功能的服务器就是标记为MASTER的代理服务器,BACKUP服务器不负责代理。

    注意:你在keepalived.conf里面配置的是你的nginx代理服务器的ip,每个代理服务器的nginx.conf里面配置的都是真实项目所在服务器的ip集群。两台代理服务器的nginx.conf配置文件的内容应当相同,毕竟代理的都是相同的服务器。
     

  • 相关阅读:
    欠拟合(Under-Fitting)、拟合(Fitting)、过拟合(Over-Fitting)示例
    2022-git 如何切换分支
    【数据链路层】点对点协议PPP(湖科大慕课自学笔记)
    sftp上传下载文件实现
    react 环境搭建以及创建项目工程
    Django ORM 事务和查询优化
    面试官:为什么 0.1 + 0.2 == 0.300000004?
    【Python中list的内置方法】
    HTTP学习记录(基于菜鸟教程)
    今年天猫双11,打响电商AI时代第一枪
  • 原文地址:https://blog.csdn.net/weixin_68509156/article/details/126068222