Nginx

459 阅读4分钟

概述:Nginx是一个高性能的HTTP和反向代理服务器。能够支持较高的并发数量。

一些概念

1. 正向代理

在浏览器端需要配置关于代理服务器的地址和信息,浏览器感知到代理服务器的存在。

image.png

2. 反向代理

在浏览器端不需要进行配置代理服务器的地址和信息,浏览器无法感知代理服务器的存在。

3. 动静分离

为了加快网站的解析速度,可以把静态页面和动态页面交给不同的服务器来解析,加快解析速度,降低单个服务器的压力。

4. 负载均衡

为减少服务器的压力,将客户端发送的请求平均分发给不同的服务器中。

一.Nginx的安装

  1. 百度下载好安装包
  2. tar -zvf ngin-xxxxx进行解压
  3. 进入到解压后nginx文件中,执行./confugure 命令进行检查。
  4. 使用命令 make && make install 进行编译安装。

二.Ngixn的基本命令

1. 运行nginx
进入nginx/sbin,执行命令:./nginx。

2. 关闭nginx
./nginx stop

3. 重启nginx
./nginx -s stop

三.配置文件解析

配置文件一共分为三个部分,具体可以看下这个博客:www.cnblogs.com/hunttown/p/…

1. 全局配置

对nginx的全局配置

2. 事件配置

3. http配置

反向代理和负载均衡都在这里配置。

配置反向代理



server{
    listen   8080;
    server_name  10.10.10.1;    //1. 这两行表明nginx监听这个主机的这个端口
    
    location /api {
        proxy_pass  http://myserver;       //2. 通过这个URL去匹配上面负载均衡的URL
    },
    location /api2 {
        proxy_pass http://mysever2;
    },
    location /api3 {
        proxy_pass http://myserv3;
    }
}

配置负载均衡

在http块中,添加配置

upstream myserver{  //3. 根据这个服务,将其平均分配到下面的服务器中
  server 10.10.10.1;    
  server 10.10.10.2;   //4. 需要进行负载均衡的服务器IP
  .....
}

server{
    listen   80;
    server_name  10.10.10.1;    //1. 这两行表明nginx监听这个主机的这个端口
    
    location / {
        proxy_pass  http://myserver;       //2. 通过这个URL去匹配上面负载均衡的URL
    }
}

当浏览器发送请求时,在nginx中的执行流程就是如图的1 2 3 4,最终完成负载均衡。

负载均衡的计算策略

1. 轮询策略【默认策略】
每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能够进行自动剔除。

2. 权重
每个服务器有自己的权重,默认为1,权重越高,被分配的几率越大。

upstream myserver{ 
  server 10.10.10.1 weight=1;    
  server 10.10.10.2 weight=10;  
  .....
}

3. ip_hash
每个请求按照访问ip的hash进行分配这样每个访客固定访问一个后端服务器,可以解决session问题。

upstream myserver{ 
ip_hash;
server 10.10.10.1;    
server 10.10.10.2;  
.....
}

4. fair根据响应时间进行分配
按照后端服务器的响应时间来进行分配,响应时间短的进行优先分配!

upstream myserver{ 
  server 10.10.10.1;    
  server 10.10.10.2;  
  .....
  fair;
}

动静分离

将客户端的动态请求和静态请求相分开 步骤:

  1. 在根目录下创建一个data目录,里面创建www和image两个子目录

image.png
在www文件里面放一个静态页面,image中随便放一个图片

  1. 配置nginx的配置文件
   server {
        listen       80;
        server_name  10.10.10.220;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /www/ {
            root   /data/;       //注意顺序是倒写的,表示是data目录下的www文件夹
            index  index.html index.htm;
        }
        location /image/ {
           root /data/;     //同样,表示的是data目录下的image文件夹
           autoindex on;   //表示会以文件列表形式展示
        }
  1. 配置结束以后必须要重启下nginx

进入到nginx的sbin目录中 : ./nginx -s reload

  1. 在页面进行访问 页面

image.png

图片

image.png

相反,如果我们启动了nginx,但是却不配置静态文件访问路径匹配的话,那么就无法访问的。

image.png

Nginx配置高可用的集群

1. 准备工作

  1. 需要两台服务器
  2. 两台服务器均安装上nginx
  3. 两台服务器上都安装上keepalived

Tomcat

一. Linux环境下的下载

进入官网下载:tomcat.apache.org/

二 . 启动

  1. 下载tomcat安装包以后,解压。
  2. 进入解压后的bin目录,运行命令./startup.sh,Tomcat即运行成功。
  3. 运行命令:ps -ef|grep tomcat,可查看Tomcat是否运行。

三. 部署项目

直接将项目放在webapp目录下即可进行访问!

Nginx执行原理

当我们执行 ps -ef|grep nginx的时候,会发现nginx一共有两个进程!

image.png

完整流程是这样的

image.png

一个Master,多个worker的好处?

  1. 可以使用./nginx -s reload来实现热部署。
  2. 每个worker都是一个独立的进程,如果有其中一个worker出现问题,其他worker独立运行,不会造成服务的中断。
  3. 每个worker都能够最大程度使用cpu效率,所以将worker数设置成服务器cpu个数最为合适。