nginx

nginx介绍

TEXT:

bilibili-nginx

 

  • 课程介绍
    • nginx节本概念
      • nginx是什么,做什么事情
      • 反向代理
      • 负载均衡
      • 动静分离
    • nginx安装、常用命令和配置文件
      • linux中安装nginx
      • nginx常用命令
      • nginx配置文件
    • nginx配置实例1-反向代理
    • nginx配置实例2-负载均衡
    • nginx配置实例3-动静分离
    • nginx配置高可用集群
    • nginx执行原理
  • 简介
    • 什么是nginx
      • nginx是一个高性能的http和反向代理web服务器
      • 特点:占有内存少,并发能力强
      • 热部署
      • nginx专为性能优化而开发,报告表明能支持50000个并发连接数
  • 相关概念
    • 反向代理
      • 正向代理
        • 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
        • 类比:谷歌翻墙用的代理,或者shadowsocks
      • 反向代理
        • 客户端不需要配置
        • 客户端访问→反向代理服务器9001->tomcat 8001,返回结果
        • 客户端对tomcat存在以及端口无感知
    • 负载均衡
      • 常规方式:浏览器→tomcat→mysql,线路返回
      • 负载均衡:浏览器→nginx→3个tomcat
      • 区别:增加服务器tomat数量,负载(请求)分发到多个tomcat
    • 动静分离
      • 客户端 浏览器→nginx→html、css、js
      • 客户端 浏览器→nginx→jsp、servlet
      • 传统方式:把静态资源和动态资源部署到tomcat里
  • 安装
    • linux安装
      • 官网下载.tar.gz包
      • nginx依赖项(素材)安装
        • pcre-8.37.tar.gz
        • openssl-1.0.1t.tar.gz
        • zlib-1.2.8.tar.gz
        • nginx-1.11.1.tar.gz
      • 安装pcre依赖
        • 把安装压缩文件放到linux系统中 /usr/src
          • wget pcre-8.37.tar.gz
        • 解压压缩文件
          • tar -xzvf pcre-8.37.tar.gz
        • 进入解压之后的目录,执行./configure
        • 使用 make && make install
        • 安装之后,使用命令,查看安装版本
          • pcre-config --version
      • 安装其他的依赖
        • yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
      • 安装nginx
        • 同 pcre的单独安装方式
        • 安装成功之后,在usr多出来一个文件夹/local/nginx,sbin/下有nginx命令
        • http://127.0.0.1
      • 查看开放的端口号
        • firewall-cmd --list-all
      • 设置开放的端口号
        • firewall-cmd --add-service=http -permanent
        • sudo firewall-cmd --add-port=80/http -permanent
        • 其他端口 sudo firewall-cmd --add-port=8001/http -permanent
      • 重启防火墙
        • firewall-cmd --reload
  • 常用命令
    • 进入nginx安装目录/sbin下
      • ./nginx -v
      • ./nginx
      • ./nginx -s stop
      • ./nginx -s reload
      • ./nginx -t
  • 配置文件
    • 位置
      • 安装目录下的conf/下
    • 组成
      • 全局块
        • nginx.conf文件开始至 events之间的部分
          • 配置整体运行的指令
      • events块
        • 主要影响nginx服务器和用户的网络连接
      • http块(配置最频繁部分)
        • http全局块
        • http server块
  • nginx配置实例-反向代理1
    • 实现效果
      • 打开浏览器,在地址栏输入www.123.com,跳转到linux系统tomcat主页面中
    • 准备工作
      • 安装tomcat,使用默认端口8080,并启动
    • 访问过程
      • 浏览器(www.123.com)→nginx(ip1:80)→tomat(ip2:8080)
      • windows中配置hosts
        • 1本地hosts寻找域名配置
        • 2网络中寻找dns域名解析配置
    • 具体配置,nginx.conf
      • server { servier_name: nginx_ip;location {   proxy_pass http://127.0.0.1:8080; }}
  • nginx配置实例-反向代理2
    • 实现效果
      • 使用nginx反向代理,根据访问路径跳转到不同端口的服务中,nginx监听端口为9001
      • 具体
        • 访问http://127.0.0.1:9001/edu/,直接跳转到127.0.0.1:8080
        • 访问http://127.0.0.1:9001/vod/,直接跳转到127.0.0.1:8081
    • 准备工作
      • 准备两个tomcat服务器,8080和8081,注意8081的server.xml相应端口需要修改
      • 创建文件夹和测试页面
        • tomcat/webapps/下分别创建/edu,/vod
        • /edu,/vod下放入a.html,页面显示tomcat对应的端口
    • 具体配置,nginx.conf
      • 增加一个server块
        • server {listen 9001;server_name nginx_ip;location ~ /edu/ {                   proxy_pass http://tomcat1_ip:8080;                              }location ~ /vod/ {                 proxy_pass http://tomcat2_ip:8081;                              }}
        • location 正则表达式:需百度
      • 端口需要开放,9001,8080,8081
  • nginx配置实例2-负载均衡
    • 实现效果
      • 浏览器地址输入,http://nginx_ip/edu/a.html,负载均衡效果
    • 准备工作
      • 准备两个tomcat服务器,8080和8081,注意8081的server.xml相应端口需要修改
      • 在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html,用于测试
    • 具体配置,nginx.conf
      • 新增 upstream myserver { server tomcat1_ip:8080; server tomcat2_ip:8081;}server{listen 80;server_name nginx_ip;location / {    proxy_paxx http://myserver;        }}
    • 分配策略
      • 轮询(默认)
        • 每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
      • weight(权重)
        • weight代表权重,默认为1,权重越高被分配的客户端越多
        • upstream myserver { server tomcat1_ip:8080 weight=5; server tomcat2_ip:8081 weight=10;}
      • hash(ip_hash)
        • 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
        • upstream myserver {ip_hash; server tomcat1_ip:8080; server tomcat2_ip:8081;}
      • fair
        • 按照后端服务器的响应时间来分配请求,响应时间短的优先分配
        • upstream myserver {server tomcat1_ip:8080; server tomcat2_ip:8081;fair;}
  • nginx配置实例3-动静分离
    • 概述
      • 定义
        • nginx动静分离简单来说就是将动态请求和静态请求分开,而不能理解成知识单纯的将动态页面和静态页面物理分离。可以理解成使用nginx处理静态页面,使用tomcat处理动态页面。
      • 实现角度
        • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上
        • 另一种是动态跟静态文件混合在一起发布,通过nginx来分开
      • 目的
        • 提高系统响应速度,降低动态请求访问tomcat的频率
      • 浏览器缓存
        • location~expires参数设置,如 3d
    • 准备工作
      • root下新建 /data/www和/data/image两个文件夹
      • www中放入a.html,image中放入图片 a.jpg
    • 实现效果
      • 访问 http://nginx_ip/www/a.html → 实际访问nginx所在服务器的/data/www/a.html
      • 访问 http://nginx_ip/image/a.jpg → 实际访问nginx所在服务器的/data/image/a.jpg
    • 配置(nginx.conf)
      • server {listen 80;server_name nginx_ip;location /www/ {                   root /data/;                  index index.html index.htm;                              }location /image/ {                  root /image/;                  autoindex on;                              }}
      • autoindex on 列出文件的目录
  • nginx配置高可用集群
    • nginx可能会宕机
    • nginx配置主从集群 master/backup
      • keepalived
        • 路由作用
        • 设置虚拟ip
    • 准备工作
      • 需要两台服务器,如 192.168.17.129,192.168.17.131
      • 在两台服务器上都安装上nginx
      • 在两台服务器上都安装上keepalived
        • yum install keepalived -y
        • rpm -q -a keepalived
        • /etc/keepalived/keepalived.conf
    • 完成高可用配置
      • /etc/keepalived/keepalived.conf
        • 全局,脚本,虚拟ip
        • 全局,router_id配置的主机名,与hosts中127.0.0.1 绑定的域名相同
      • systemctl start keepalived.service
      • systemctl stop keepalived.service
      • ip a 可以查看绑定的虚拟ip
  • nginx执行原理
    • master&worker
      • 启动一个nginx后
      • ps -ef |grep nginx
      • 一个master,一个worker,共两个进程
    • worker如何进行工作
      • 争抢模式|方式
    • 一个master和多个worker好处
      • 热部署
        • 可以使用 nginx -s roload :假设当前任务被第一个worker争抢到,1/4,此时修改配置并执行 ./nginx -s reload ,后三个worker更新配置,第一个由于已有任务,并不执行更新。此时若有请求进入,则第一个worker不参与争抢,而是剩余三个已经更新配置的三个worker争抢,当第一个worker执行完毕,更新配置,当有新的请求来是,第一个也可以参与争抢,并且所有的worker都已经是最新的配置
      • worker进程独立,不用加锁,一个worker挂掉不影响其他worker正常工作
      • 设置多少个worker合适
        • worker数=cpu数量
        • nginx也采用多路io复用机制
      • 连接数worker_connection
        • 一个静态请求占用2个连接数:请求、响应
        • 一个动态请求占用4个连接数:nginx与tomcat之间有一组请求、响应
      • 最大并发数
        • 一个maser,4个worker,每个worker最大的链接数是1024,计算最大并发数
        • 公式
          • 静态请求:woker_proccesses * woker_connections / 2
          • 动态请求:woker_proccesses * woker_connections / 4
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值