nginx 入门简介

nginx 作用

  • 反向代理
  • 负载均衡
  • 动静分离
  • http缓存
  • 数据压缩
  • 实现跨域访问

利用lvs对nginx做主备

什么是nginx

nginx是高性能的反向代理服务器.nginx是http server
(正向代理代理的是客户端,反向代理代理的是服务端)

安装nginx

  1. 下载tar包
  2. tar -zxvf nginx.tar.gz
  3. ./configure [–prefix= 文件路径] (例子:./configure --prefix=/usr/local/nginx)
  4. make && make install

nginx 的启动和停止

  • 启动: 进入sbin目录 ./nginx
  • 重启: 进入sbin目录 ./nginx -s reload
  • 停止: 进入sbin目录 ./nginx -s stop

配置内容规则

  1. 用"#"表示注释
  2. 每行配置的结尾需要加上分号
  3. 如果配置项值中包括语法符号,比如空格符,那么需要使用单引号或者双引号括住配置项值,否则Nginx会报语法错误.
  4. 单位简写:
  • K或者k千字节(KiloByte,KB)
  • M或者m兆字节(MegaByte, MB)
  • ms(毫秒)
  • s(秒)
  • m(分钟)
  • h(小时)
  • d(天)
  • w(周,包含7天)
  • M(月,包含30天)
  • y(年,包含365天)

配置nginx

在 nginx.conf 文件中配置.

  • main: 日志等
  • events: io模型允许的连接数
  • http: web服务器相关配置

http配置:

虚拟主机配置:

server{
    listen          8080;       //端口号
    server_name     localhost;
    location / {            //匹配规则
        root html;          //静态资源存放路径
        index   index.html  //首页资源的名称
    }
}

基于域名的虚拟主机

server{
    listen          80;       //端口号
    server_name     localhost;  //域名转发
    location / {            //匹配规则
        root html;          //静态资源存放路径
        index   index.html  //首页资源的名称
    }
}
server{
    listen          80;       //端口号
    server_name     ask.gupaoedu.com;
    location / {            //匹配规则
        root html;          //静态资源存放路径
        index   index.html  //首页资源的名称
    }
}

location

配置语法

location配置规则

  • location = /uri 精准匹配
  • location ^~/uri 前缀匹配
  • location ~/uri 后缀匹配
  • location / 通用匹配

规则的优先级

location = /
location = /index
location ^~ /article/
location ^~ /artrcle/files/
location ~ \.(gif|png|js|css)$  //静态资源
location /  //通用规则
  1. 精准匹配是优先级最高
  2. 普通匹配(最长的匹配)
  3. 正则匹配

Nginx 模块

反向代理、 email 、 nginx core

模块分类

  1. 核心模块 ngx_http_core_module
  2. 标准模块
  3. 第三方模块

如何添加第三方模块

./nginx -V 查看之前启动的命令

  1. 原来所安装的配置,你必须在重新模块的时候加上
  2. 不能直接make install
安装方法
 ./configure --prefix=/nginx安装目录 --add-module = /第三方模块

反向代理

    server {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://192.168.11.161:8090;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

负载均衡

upstream语法
upstream tomcat{
    ip_hash;        //hash算法.
    server 192.168.20.123   weight=1 max_fails=2 fail_timeout=60s;  //max_fails 最大请求失败次数.   //fail_timeout 是两次请求失败后,多久不去访问他.
    server 192.168.20.234   weight=2;  weight 是权重算法
}

server{
    listen          80;       //端口号
    server_name     ask.gupaoedu.com;
    location / {            
       proxy_pass http://tomcat;
       proxy_method POST;       //可以把Get请求转换为Post请求
        proxy_set_header Host $host;    //获取客户端的地址放到header中
        proxy_set_header X-Real-IP $remote_addr;    //转发请求的地址放到X-Real-IP中
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        //所有经过转发的ip
        proxy_next_upstream error timeout http_500 http_503;  //设置请求错误返回.
        proxy_connect_timeout 60s;  //请求超时时间
        proxy_send_timeout 60s; //后台数据发送超时时间
        proxy_read_timeout 60s; //后台数据读取超时时间.
    }
}
负载均衡策略或者算法(利用upstream语法)
  • wrr: 权重轮询 (默认)
  • ip_hash: 根据请求的ip地址进行hash
  • least_conn: 当前活跃连接数最小,权重越大,越优先选择
    负载均衡策略

Nginx动静分离

什么是动静分离

将动态请求和静态请求区分访问,

静态资源的类型
浏览器端渲染	html、js、css
图片	jpeg、gif、png
视频	flv、mpeg
文件	txt、excel
怎么实现

在server 中添加location

location / {
    proxy_pass http://static;   //静态资源服务器 二选一
}
location ~ .*\.(js|css|png|svg|ico|jpg)${
    root /usr/loccl/static-resource;       //本地静态目录
    proxy_pass http://static;   //静态资源服务器 二选一
    expires 1d;     //缓存过期时间1天
}

upstream static {
    server 192.168.20.234:8080;
}
缓存

Cache-Control/Pragma/Expires/

可以设置缓存目录,目录分层,缓存大小和过期时间.

location / {
    proxy_pass http://192.168.20.234:8090;
    proxy_cache qingshan_cache;     
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 304 1m;
    add_header X-Proxy-Cache $upstream_cache_status;
}

缓存配置信息

压缩
Gzip
#开启gzip,减少我们发送的数据量
gzip on;
#大于1k后开始压缩
gzip_min_length 1k;

#4个单位为16k的内存作为压缩结果流缓存
gzip_buffers 4 16k;

#gzip压缩比,可在1~9中设置,1压缩比最小,速度最快,9压缩比最大,速度最慢,消耗CPU
gzip_comp_level 5;

#压缩的类型
gzip_types application/javascript text/plain text/css application/json application/xml    text/javascript; 

#给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
gzip_vary on;

#禁用IE6以下的gzip压缩,IE某些版本对gzip的压缩支持很不好
gzip_disable "MSIE [1-6].";

nginx怎么实现Gzip

gizp压缩配置

nginx.conf中
http{
    gzip on;    //开启压缩
    gzip_min_length  5k //最小压缩长度
    gzip_comp_level 3;  //压缩级别,级别越高,压缩越小
    gzip_types application/javascript image/jpeg;   //对那些文件进行压缩
}

防盗链

在静态资源中配置
valid_referers none blocked 192.168.11.161;   //防盗链配置 
if ($invalid_referer){
    return 404;
}

跨域访问

server中添加内容
serve{
    listen 80;
    server_nae hocalhost;
    location / {
        listen 80;
        location / {
            proxy_pass http://tomcat;
            add_header 'Access-Control-Allow-Origin' '*'
            add_header 'Access-Control-Allow-Methods' 'GET.POST,DELETE';
            add_header 'Aceess-Control-Allow-Header' 'Content-Type,*';   //配置解决跨域的方式.
        }
    }
}

Nginx 进程模型简介

多进程

多进程+多路复用

master进程、 worker进程

worker_processes    //进程数 CPU总核心数

events {
    use epoll;
    worker_connections 10024;
}

worker_connections  1024;   //连接数
epoll、select       //linux IO 模型

access_log //访问日志

Nginx 高可用方案

keepalived: 轻量级的高可用解决方案
LVS 四层负载均衡软件 ,监控lvs集群系统中的各个服务节点的状态.

实践

  1. 下载 keepalived-2.0.7.tar.gz
  2. 解压 tar -zxvf keepalived-2.0.7.tar.gz
  3. 进入 cd keepalived-2.0.7
  4. ./configure[–prefix][–sysconf]
  5. yum安装缺少的依赖

vrrp脚本,

Openresty

  • Nginx+lua
  • 网关
网关

网关的概念
一个网络向另外一个网络发送消息

  1. api网关
  2. open api 开放服务(支付宝)

通过网关做

  1. 鉴权
  2. 限流
  3. 灰度发布
  4. 分流
  5. 日志记录
  6. 熔断
灰度发布

一部分更新另一部分不更新.

nginx+lua 可以写逻辑.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值