Nginx基本知识及入门使用

Nginx

Nginx基本概念

nginx是什么。做什么事情

  • nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,转为性能优化而生
  • 占有内存少、并发能力强
  • 网站用户有:百度、京东、新浪、网页、腾讯、淘宝
  • 可以支持高达50000个并发连接

反向代理

  • 正向代理
    • 如果说把局域网的Internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,这种带代理服务器就称为正向代理
    • 简单的说就是通过代理服务器去访问需要访问的网址
    • 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
  • 反向代理
    • 其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器后去数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的IP地址

负载均衡

  • 客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,在将结果返回给客户端
  • 解决单个服务器解决不了的问题,改变单一服务器,增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个的服务器上的情况分发到多台服务器上

动静分离

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

Nginx 安装、常用命令和配置文件

在linux 系统中安装Nginx

  • 进入nginx官网下载 https://nginx.org/
  • nginx相关素材(依赖)
    • 安装pcre依赖
      • 把安装文件放在linux系统中
      • 解压压缩文件 tar -xvf +文件名
      • 进入解压之后目录,执行./configure
      • 使用 make&&make install 编译并安装
      • 查看pcre版本号:pcre-config --version
    • 安装openssl
    • 安装zlib
      • yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
    • 安装nginx
      • 把nginx安装文件放到linux系统
      • 解压压缩文件
      • 进入解压目录后 执行./congigure
      • make && make install
  • 安装成功之后,在user多出来一个文件夹local/nginx,sbin里边有启动脚本
  • firewall -cmd --list-all
  • 设置开放的端口号:
    • firewall-cmd --add-service=http -permanent
    • sudo firewall-cmd --add-port=80/tcp --permanent
  • 重启防火墙:firewall-cmd --reload

Nginx常用命令

  • 使用nginx操作命令前提条件:必须进入nginx目录
  • 查看nginx版本号
    • ./nginx -v
  • 启动nginx
    • ./nginx
  • 关闭nginx
    • ./nginx -s stop
  • 重新加载nginx(重新加载nginx.conf配置文件)
    • ./nginx -s reload

Nginx配置文件

  • 配置文件 nginx/conf
  • 配置文件组成(三部分)
    • 全局块:从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令
      • eg:worker_processes 1; 值越大,可支持的并发处理量也越多。依赖于硬件设备的支持
    • events块:主要影响nginx服务器与用户网络的连接
      • eg:worker_processes 1024; 支持最大连接数
    • http块:配置最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
      • 需要注意:http块也可以包括http全局块、server块

Nginx配置实例1-反向代理

  • 实现效果

    • 打开浏览器,在浏览器地址栏输入地址www.123.com 跳转linux系统Tomcat主页面中
  • 准备工作

    • 在linux系统安装tomcat,使用默认端口8080
      • 在Tomcat 压缩包放入linux中,解压
      • 进入Tomcat的bin目录中, ./startup.sh启动Tomcat服务器
    • 对外开放访问端口、重启防火墙
      • sudo firewall-cmd --add-port=8080/tcp --permanent
      • firewall-cmd --reload
    • 在Windows访问linux中Tomcat主页面
  • 具体步骤

    • 在Windows系统的host文件进行域名和ip对应的配置(让他求求www.123.com这个域名时直接访问nginx代理服务器)

      • 在host中添加内容:ip地址+访问路径
    • 在nginx中进行请求转发的配置

      • server_name:配置ip地址

      • proxy_pass http://127.0.0.1:8080 转发路径

      • 两个的话:

        location ~/edu/{
         proxy_pass http://127.0.0.1:8080
        }
        
        location ~/vod/{
         proxy_pass http://127.0.0.1:8081
        }
        
    • 重启nginx测试

Nginx 配置实例-2负载均衡

  • 实现效果

    • 浏览器地址栏输入地址 http://192.168.17.128/edu/a.html 实现均衡效果,平均8080和8081端口中
  • 配置(在http块中添加)

    upstream myserver{
    	server 192.168.17.129:8080;
    	server 192.168.17.129:8081;
    }
    server{
    	listen 80;
    	server_name 192.168.17.129
    	location/{
    	proxy_pass http:myserver
    	}
    }
    
  • nginx分配服务器策略

    • 轮询(默认)
      • 每个请求按时间顺序逐一分配到不同的服务器中,如果服务器down掉了,能自动剔除
    • weight
      • weight代表权重,默认为1,权重越高被分配的客户端越多
    • ip_hash
      • 每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
    • fair(第三方)
      • 按后端服务器的响应时间来分配请求,响应时间短的优先分配

Nginx配置实例3-动静分离

  • Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种:
    • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;。
    • 另外一种方法就是动态跟静态文件混合在-起发布,通过nginx来分开。。
    • 通过location 指定不同的后缀名实现不同的请求转发。通过expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。( 如果经常更新的文件,不建议使用Expires来缓存),我这里设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。。
  • image-20200626075726022

Nginx配置高可用集群

  • 什么是nginx高可用
    • Tomcat 和nginx都可能会宕机 如果tomcat宕机的话nginx会自动剔除,但是nginx宕机怎么办? 高可用就是解决这个问题的
  • 准备工作
    • 需要两台nginx服务器
    • 需要keepalived(需要安装的)
      • yum install keeplived -y
    • 需要虚拟ip

Nginx原理

  • master和 worker
  • worker 怎么进行工作的
    • master接收到请求后worker采用争抢机制,抢到后利用反向代理发送Tomcat
  • 一个master和多个worker
    • 可以使用nginx -s reload 热部署(不用重新不熟直接重新加载配置文件),利于nginx进行热部署操作
    • 对于每个worker来说都是互相独立的进程,不需要加锁,所以省掉了锁带来的开销
  • 设置多少worker是最合适的
    • Nginx同redis类似都采用了io多路复用机制,Windows无法发挥io多路复用机制
    • worker数和服务器的cpu数目相等为最适宜的
  • 连接数 worker_connection
    • 发送一个请求,占用了worker的几个连接数?
      • 答案:2个或者4个(静态资源2个动态4个)
    • nginx有一个master,有四个worker,每个worker支持最大的连接数据1024,支持最大并发数是多少?
      • 答案:worker支持最大连接数4*1024 除以2/4
      • 解析:普通的静态问问最大并发数是:worker_connectionsworker_processes/2,而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connectionsworker_processes/4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值