• Nginx


    Nginx简介

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。协议下发行。特点占用内存少,并发能力强,使用nginx的网站有腾讯、淘宝、百度、京东、新浪、网易等。


    nginx作用

    1、反向代理
    正向代理,用户A不能访问谷歌,浏览器配置代理服务器,然后通过访问代理服务器,让代理服务器获取内容并返回用户A。
    反向代理,用户A发送请求给反向代理服务器,反向代理转交请求,并将获得的内容返回给客户端。反向代理客户端不需要任何配置。
    2、负载均衡
    负载均衡,分摊到多个操作单元上进行执行。
    3、动静分离
    静态页面与动态页面部署到不同服务器上


    检查安装与启动停止

    进入/usr/local/nginx/sbin/目录

    ./nginx -v       // 查看版本
    ./nginx        // 启动
    ./nginx -s stop    // 停止
    ./nginx -s reload   // 重启


    配置systemctl后的管理方式

    systemctl start nginx
    systemctl stop nginx
    systemctl restart nginx
    systemctl status nginx


    配置systemctl

    1、创建一个nginx.service并添加执行权限
      vim /usr/lib/systemd/system/nginx.service
      chmod +x /usr/lib/systemd/system/nginx.service

    2、添加内容

    注释不能加,要去掉,否则报错
    [Unit] # 对服务的说明
    Description=nginx - high performance web server # 描述服务
    After=network.target remote-fs.target nss-lookup.target # 描述服务类别
    
    [Service] # 服务的一些具体运行参数的设置
    Type=forking # 后台运行的形式
    PIDFile=/usr/local/nginx/logs/nginx.pid # PID文件的路径
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf # 启动准备
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动命令
    ExecReload=/usr/local/nginx/sbin/nginx -s reload # 重启命令
    ExecStop=/usr/local/nginx/sbin/nginx -s stop # 停止命令
    PrivateTmp=true # 给服务分配临时空间
    
    [Install]
    WantedBy=multi-user.target

    3、重载systemctl命令

    systemctl daemon-reload
    systemctl start nginx.service


    nginx配置文件解释

    # 用户
    #user  nobody;
    
    # processes [ˈprəʊsesɪz] 进程
    worker_processes  1;    # 此项配置表示可以处理的并发数量;设置值和CPU核心数一致
    
    # 日志位置和日志级别
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    events {
        worker_connections  1024; # 支持的最大连接数,客户端到nginx的连接可以有多少个
    }

    Nginx原理分析

    Nginx启动后有多进程,包括一个master进程,多个worker进程。
    worker进程个数是根据服务器CPU核数来决定的。如4核心配置为worker_processes 4。如果设置少了,cpu的性能不能得到发挥。设置多了,频繁切换上下文带来损耗。
    多个worker使用竞争机制从master获取任务。
    worker_connections 1024,表示每个worcker支持的最大连接数。
    因此,一个nginx能建立的最大连接数是 worker_processes * worker_connections,worker_connections默认是1024,当然,这是最大连接数。如果http请求本地资源,支持的最大并发量就是worker_processes * worker_connections;如果是http1.1,每次访问占用两个连接,支持的最大并发量就是worker_processes * worker_connections/2。如果使用反向代理,http1.1,每个请求过来,nginx服务器会与浏览器和后端服务器分别建立两个连接,支持的最大并发量就是worker_processes * worker_connections/4。

    master、worker机制优点
    1、可以使用 nginx -s reload热部署
    master进程在接到指令后,重新加载配置文件,再启动新的worker进程,新worker开接收新请求;同时master向所有老worker进程发送信号,告诉他们,不再接收新请求,如果有未处理完的请求处理完成后再退出。
    2、每个worker都是独立的进程,一个worker出现故障,其他worker继续工作,不会造成服务中断。


    location 规则说明

    location  /  {
      proxy_pass http://192.168.0.105:9003;
    }

    location用于匹配url,语法如下:

    location [ = | ~ | ~* | ^~ ]  url {

    }

    ~  正则匹配,区分大小写
    ~*  正则匹配,不区分大小写
    =  不使用正则匹配,字符中必须是严格的url


    反向代理 

    示例一,反向代理单机服务器:

    server {
          # listen和servr_name配置的是nginx对外暴露的ip和端口号
         # server_name的配置不可以加http://前缀,否则启动报错
            listen       80;
            server_name  192.168.0.105;
    
            # 下面是转发给tomcat的ip和端口号
            # proxy_pass的配置可以加http:前缀,末尾不要忘了冒号
            location / {
                proxy_pass http://192.168.0.105:9003;
            }
    }

    示例二,反向代理多台服务器:

    有两台tomcat,一台tomcat的webapps里有项目first,first目录下有WEB-INF、index.jsp等;另一台tomcat的webapps里有项目second,second目录下也有WEB-INF、index.jsp等;

    server {
            listen       80;
            server_name  192.168.0.105;
    
            location ~ /first/ {
                proxy_pass http://192.168.0.105:9000;
            }
    
            location ~ /second/ {
                proxy_pass http://192.168.0.105:9001;
            }
    }

    浏览器访问:192.168.0.105/first  192.168.0.105/second  


    负载均衡默认轮询

    upstream myserver {
        server 192.168.0.105:9000;
        server 192.168.0.105:9001;
        server 192.168.0.105:9003;
    }
    
    server {
        listen       80;
        server_name  192.168.0.105;
    
        location / {
            proxy_pass http://myserver;
            root   html;
            index  index.html index.htm;
        }
    } 

    负载均衡策略

    轮询,每个请求按照时间顺序分配到不同的服务器,如果后端服务器down掉,就自动剔除了。
    权重,用于性能不均,哪个服务器分配的多些,weight=3
    ip绑定,每个请求按照ip的hash结果分配,一个访客一个固定后端服务器,解决session缓存的问题


    动静分离

    通过设置 expires 参数,可以使浏览器在过期时间内缓存页面,浏览器发送请求,服务器对比该文件最后更新时间,文件没有更新,返回给浏览器304,浏览器从缓存里返回用户;有改变,服务器返回内容。

    经常更新的页面不建议使用;

       server {
            listen       80;
            server_name  192.168.0.105;
    
            location /images/ {
                autoindex on;
                root /data/;
            }
    
            location /www/ {
                root /data/;
            }
        }

    文件服务器目录:
    /data/images/1.jpg
    /data/www/1.txt

    浏览器访问:http://192.168.0.105/images/1.jpg  http://192.168.0.105/www/1.txt

  • 相关阅读:
    作业4.称体重
    一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.
    一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
    Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查
    学习Django,http协议,
    值类型之间的相互转化,运算符,if条件判断,循环,函数
    js导读,js引入,js选择器,事件,操作页面文档,计算后样式,数据类型
    字体图标,盒子显隐,overflow属性,伪类设计边框,盒子阴影2d形变
    浮动布局,定位布局(固定定位,绝对定位,相对定位),过渡动画
    盒子总结,文本属性操作,reset操作,高级选择器,高级选择器优先级,边界圆角(了解),a标签的四大伪类,背景图片操作,背景图片之精灵图
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/12985029.html
Copyright © 2020-2023  润新知