CoreJava 二分类数据集 intellij idea下载 Zookeeper使用 物联网项目 Spring Cloud laravel 虚拟机 网站后台管理模板 photoshop视频教程全集下载 easyui视频 springboot单点登录 华为路由器ipv6配置 cpm计算 linux关闭mysql matlab向量的模 mysql自然连接 普通话网上报名 python入门教程 python语言入门 python命令行参数 java学习手册 java数组扩容 java的基本类型 java遍历集合 java怎么安装 java多线程处理 java中map java连接sql数据库 linux入门基础 php实例 微信超级好友 ps插入表格 su版本转换器 存储过程写法 rpm卸载命令 黑客入门新手特训 复仇之矛天赋 圣武枪魂 熊猫头表情包制作
当前位置: 首页 > 学习教程  > 编程语言

nginx中间件笔录

2020/10/8 19:09:25 文章标签:

代理的方式 正向代理:代理的是客户端。 eg:我们需要访问谷歌,由于谷歌被屏蔽掉了,通过vpn的代理软件访问谷歌,这种方式就是正向代理!方向代理: 代理的是服务端。 eg:我们需要访问百…

代理的方式

  • 正向代理:代理的是客户端。
    eg:我们需要访问谷歌,由于谷歌被屏蔽掉了,通过vpn的代理软件访问谷歌,这种方式就是正向代理!
  • 方向代理: 代理的是服务端。
    eg:我们需要访问百度,百度通过代理服务器访问到具体的server处理,这种方式就是反向代理!

常用的web服务器

  • apache,nginx,tomcat,jetty,netty,weblogic,iis,jboss,resin

  • 静态与动态

    1. 静态访问:表示页面中没有动态的语言,如html等,多次处理的结果都是访问同一信息
    2. 动态访问:是基于jsp技术进行动态出来逻辑信息进行访问

nginx核心配置文件:

  1. nginx命令:nginx -s reload 重启
    nginx -t 检查配置文件

  2. nginx日志切割,利用运行定时任务脚本
    mv access.log access.log_20201001
    kill -USR1 Nginx 主进程号 让nginx重新生成日志文件access.log

  3. location匹配规则

    1. location =/url{} 精准匹配
    2. location /url{} 一般匹配
    3. location [|^|~*]/url{} 正则匹配
      优先级: 精准匹配 > 一般匹配 > 正则匹配
  4. rewrite的使用

    1. 支持url重写;if判断、return

    2. 作用范围: server/location/if中;只能对域名后面的出去参数外的字符串起作用;
      if(条件){}
      = 号 或 ~;
      return code
      if($request_url ~* .sh){
      return 403
      }

    3. 语法: rewrite regex replacement [flag]{last/break/redirect 返回临时302/permant 返回永久302}
      last 停止处理后续的rewrite指令集,然后对当前重写的url在rewrite指令集上重新查找
      break 停止处理后续的rewrite指令集,并不会重新查找

eg1:
...
location /{
     #将相对‘/’重定向到‘百度’
     rewrite ^/ http://www.baidu.com;
}
...
eg2:
...
location /{
     rewrite '^/images/([a-z]{3})/(.*)\.(png)$' /mic?file=s2.s3;
     set Simage_file $2;
     set Simage_type $3;
}
location /mic{
     access_log logs/mic.log main;
     root html;
     #匹配文件名,首先匹配到的直接返回
     try_files /$arg_file /image404.html;
}
location =/image404.html{
     return 404 "image not found exception";
}
...
  1. 浏览器本地缓存配置 和压缩策略
    浏览器本地缓存:
    expires s|m|h|d 缓存时间设置语法

    Gzip压缩策略:
    浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型 -> 服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回
    -> 浏览器拿到数据以后解码;gzip、deflate、sdch

...
 server {
    listen  80;
    server_name localhost;
    #开启gzip
    gzip on;
    #压缩内存的申请
    gzip_buffers 4 16k;
    #压缩级别(1-9),级别越高,尺寸越小,cpu计算量越大
    gzip_comp_level 4;
    #在不到该长度的文件不进行压缩
    gzip_min_length 500;
    #针对与某些类型进行压缩,类型可参考conf/mime.types
    gzip_type text/css text/html text/xml;
    
    location /{
           root html;
           index index.html index.htm;
       }
       location ~\.(png|jpg|js|css|gif)${
           root html/images;
           expires 5m;
    }
 }

...
  1. Upstream常用参数介绍
    语法:server address [parameters]
    其中关键字server必选。
    address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
    parameters是可选参数,可以是如下参数:
    1. down:表示当前server已停用
    2. backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
    3. weight:表示当前server负载权重,权重越大被请求几率越大。默认是1
    4. max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,
    那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认
    是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。

  2. nginx配置https的请求

    • https是基于ssl/tls协议
    • 加密方式:非对称加密,对称加密,hash算法
    • crt的证书 -> 返回给浏览器
    • 创建证书:
      1. 创建签名请求的证书(csr); csr核心内容是一个公钥
        • openssl req -new -key server.key -out server.csr
      2. 去除使用私钥是的口令验证
        • cp server.key server.key.org
        • openssl rsa -in server.key.org -out server.key
      3. 标记证书使用私钥和csr
        • openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
        • x509是一种证书格式
        • server.crt就是我们需要的证书
  3. nginx + keepalived

    • keepalived -> VRRP(虚拟路由器冗余协议)
    • VRRP全称 Virtual Router Redundancy Protocol,即 虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议
      ,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,但在外界
      看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),
      占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。master会发组播
      消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master
      ,保证路由器的高可用。
    • 安装keepalived:
      1. Tar -zxvf keepalived.tar.gz
      2. ./configure --prefix=/mic/data/program/keepalived --sysconf=/etc
      3. 缺少依赖:yum install gcc ; yum install openssl-devel;yum -y install libnl libnl-devel
      4. 编译安装 make && make install
      5. cd到解压的包 /parker/data/program/keepalived-1.3.9
      6. ln -s /mic/data/program/keepalived/sbin/keepalived /sbin --建立软链接
      7. cp /mic/data/program/keepalived-1.3.9/keepalived/etc/init.d/keepalived /etc/init.d/
      8. 添加到系统服务
        • chkconfig --add keepalived
        • chkconfig keepalived on
        • Service keepalived start

下面是nginx基本配置介绍

#表示的是用户或用户组
#user  nobody;
#工作线程数,与cpu核心数有关,配置多个可以减少上下文切换(一般与cpu核心数相等,了解)
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    #配置io网络模型
    use epoll
    #允许链接数
    worker_connections  1024;
}


http {
    #配置多个服务提供(默认是轮询机制,其中还有weight权重|url_hash|ip_hash|fair根据响应时间等分配请求),
    #该配置可单独放在一个.conf文件中
    upstream gupaoprotal{
        server 10.2.22.120:8080;
        server 10.2.22.50:8080;
    }
    
    #指定包含的文件
    include       mime.types;
    #默认类型
    default_type  application/octet-stream;
    #日志格式
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #log声明     路径及文件名     日志格式标识
    #access_log  logs/access.log  main;
    
    #关闭日志
    #access_log off;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    #指定包含nginx配置(在其中的配置,只需要server{}配置了)
    include /etc/nginx/conf.d/*.conf;
    
    #server的配置,可配置多个;先检查域名或ip,然后匹配端口号(优先级最高)
    server {
        #监听端口号
        listen       80;
        #请求域名匹配
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #这是相对于nginx目录下的html文件夹
            root   html;
            index  index.html index.htm;
        }
    }
}


本文链接: http://www.dtmao.cc/news_show_250091.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?