• Nginx笔记


    一、Nginx安装配置及基本操作

    1、Nginx安装
    环境:Linux
    安装命令:yum install nginx
    查看是否安装成功:id nginx
    关闭防火墙:setenforce 0
    getenforce
    systemctl disable firewalld
    systemctl stop firewalld


    2、Nginx基本操作
    Nginx启动:nginx
    Nginx查看是否启动:ss -tnl
    查看Nginx进程:ps -ef | grep nginx
    nginx -V:查看Nginx安装位置和支持模块
    nginx -t:检查配置文件
    nginx -q:让程序处于安静状态,不输出信息除非是错误信息
    nginx -s signal:用于传达信号
    nginx -p prefix:指定目录位置
    nginx -c:指定配置文件
    nginx -g:指定指令

    1、nginx是用来干什么的?
    nginx是异步框架的web服务器,用于处理高并发甚至是海量并发的网络数据

    2、nginx怎么配置这些功能?

    3、nginx简单配置
    cat /etc/nigix/nginx.conf:查看主配置文件
    以下为nginx配置文件:
    主配置端:

    user nginx;        #定义nginx使用那种事件驱动类型,
    worker_processes auto;    #用于设置worker进程的数量,auto表示CPU的数量
    error_log /var/log/nginx/error.log;    #记入错误日志
    pid /run/nginx.pid;        #用于配置进程编号,
    include /usr/share/nginx/modules/*.conf; #包含配置文件
    events {
        worker_connections 1024;    #worker_connections 可以打开的最大建立的连接数
    }

    accept_mutex on|off #处理新连接的方法,on是指定worker轮流处理,off则会通知所有worker进程但只有一个worker进程获得处理连接的权限,ps:在高并发时最好使用off

    HTTP配置端:

    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
        include /etc/nginx/conf.d/*.conf;
    
        server {        #server用于配置虚拟主机
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /usr/share/nginx/html;
            include /etc/nginx/default.d/*.conf;
    
            location / {
        
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }


    4、配置虚拟主机
    mkdir /data/nginx/{ip,domain,port} -pv #创建将要使用的目录
    cd /etc/nginx/conf.d/ #进入到/etc/nginx/conf.d/目录下
    vim ip.conf #创建配置文件
    在配置文件中写入:
    server { #server用于配置虚拟主机
    listen 80 default_server;
    root root /data/nginx/ip;
    index index.html;
    }
    vim /data/nginx/ip/index.html #创建HTML文件
    nginx -s reload #重启nginx

    二、Nginx调优与背后原理

    1、Linux网络IO流程
    ①用户端发送请求,网卡判断是否是需要接受的数据,如果是接受信息
    ②接受数据后,网卡告诉内存需要接受数据,cpu发送信息准备接受,期间形成一个中断
    数据存入内存缓存区
    ③调用网卡驱动将信息转换成数据报文, 然后放入队列中。
    ④Linux从队列中读取取数据报文,根据网络层协议查看IP地址是否是本机等等
    ⑤传输层协议根据数据包中的内容通知相关的应用进行数据读取,应用层执行数据包中的
    相关指令
    ⑥内核缓存区拷贝到应用缓存区
    ⑦应用读取数据构建响应,通过网络协议进行封装,发回给网卡缓存
    ⑧网卡调用网卡驱动发送数据

    2、Linux网络IO模型


    3、TCP/IP协议简介
    3.1、tcp三次握手和四次断开
    tcp三次握手:
    客户端发送请求连接的信息,服务端接受信息后返回请求连接客户端的信息,
    客户端接受到服务端发来的信息返回给服务端说接受到了。

    四次断开:
    客户端断开,服务端接受信息后断开,但请求数据可能没传送完成,在传送完成后断开,
    客户端接收完数据后断开与服务端的连接。

    3.2、tcp连接溢出
    当并发数量过大时,全连接队列满了之后会,服务端会通过net.ipv4.tcp_abort_on_overflow来决定
    如何响应,0为丢弃数据包,1为重新走握手的第二步

    3.3、洪水攻击时
    将net.ipv4.tcp_syncookies调整为1来减少攻击受到的影响,在建立连接的时候服务端会给用户配置
    cookies信息,当查看没有cookies信息时会定为攻击的

    4、Nginx优化
    Nginx 调用Linux本身的sendfile+DNA gather copy系统实现零拷贝方式,整个过程会发生2次上下文切换,0次CPU拷贝和2次DMA拷贝。
    location /video/{
    sendfile on;
    aio on;#一般I/O
    }

    4、Nginx中location指令
    server用来定义域名Host
    location用来定义uri的

    =:精准匹配
    ^~:对uri起始字符做字符串匹配(不是正则匹配),区分大小写
    ~:对uri做(正则匹配),区分大小写;
    ~*:对uri做(正则匹配),不区分大小写;
    优先级:= 大于 ^~ 大于 ~ 等于 ~* 大于 不带符号的

    例如:

    server{
      listen       80;
      server_name    www.a.com a.com;
      root        /data/nginx;
      location      = /img{
        return    701;
    }
      location      ^~ /img{
        return    702;
    }
      location      ~ /img{
        return    703;
    }
      location      ~* /img{
        return    704;
    }
    }
  • 相关阅读:
    窗体传值的方式
    多线程的两种启动方式的简单总结
    ExcelHelper
    从Excel读取信息,新建文件夹,根据起始页号和页数取图片,并将图片重命名
    自定义函数
    从sql数据库中将图片导出并重命名
    统计重复出现的次数
    创建S数据库表SQL语句
    C#执行sql文件 运行sql文件
    ssh整合常见的后台错误
  • 原文地址:https://www.cnblogs.com/dcpb/p/14307676.html
Copyright © 2020-2023  润新知