欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx的安装与配置

程序员文章站 2022-07-12 18:13:53
...

Nginx的安装与配置

1. ubuntu nginx 安装

安装


sudo apt install nginx 

启动与停止

sudo service nginx start //启动

sudo service nginx restart//重启

sudo service nginx stop//停止

查看nginx进程

ps -fe  | grep nginx
Nginx的安装与配置
1559219932611.png

2.nginx events配置解析


events {
    accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections 1024; # 最大连接数
    client_header_buffer_size 4k;
    open_file_cache max=2000 inactive=60s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 1
}
  • worker_connections 的值,根据worker_processes进程数目和系统可以打开的最大文件总数进行适当的设置。
  • 使并发总数小于操作系统可以打开的最大文件数目
  • 本质是根据主机的物理CPU和内存进行配置
  • 理论的并发数和实际有偏差,主机有其他进程需要消耗
ulimit -a//查看系统约束
ulimit -SHn 65535//改变系统约束
Nginx的安装与配置
1559220371987.png
  • accept_mutex on

惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。设置网路连接序列化,防止惊群现象发生,默认为on。

  • multi_accept on

设置是否允许同时接受多个网络连接:

只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。

  • use epoll

    使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

    )标准事件模型

    Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

    B)高效事件模型

    Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

    Epoll:使用于Linux内核2.6版本及以后的系统

  • keepalive_timeout 60

keepalive超时时间。 这里指的是http层面的keep-alive 并非tcp的keepalive 。

  • client_header_buffer_size 4k

客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为系统分页大小。查看系统分页可以使用 getconf PAGESIZE命令:

  • open_file_cache max=2000 inactive=60s

    为打开文件指定缓存,默认是没有启用的,max指定缓存最大数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存 打开文件最大数量为我们再main配置的worker_rlimit_nofile参数。

  • open_file_cache_valid 60s

    这个是指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除

  • open_file_cache_min_uses 1

    open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除

3.location配置

  • location语法

> location [=||*|^~] patt { } //中括号中为修饰符,可以不写任何参数,此时称为一般匹配,也可以写参数

 location = patt {} [精准匹配]

 location patt{}     [普通匹配]

 location ~ patt{}  [正则匹配]
  • location匹配过程:

    • 先进性精准匹配,如果命中立即返回结果并结束解析的过程。
    • 精准匹配未命中判断普通匹配,如果命中多个会记录下"最长的"命中结果,但不会结束解析;
    • 继续判断正则匹配,按照正则匹配设置的规则正则表达式进行匹配,如果有多个正则匹配由上到下进行匹配,一旦匹配成功一个会立即返回结果并结束解析.
    server {
    
            listen 80; 
    
            server_name localhost; 
    
            location =/text.html { #精准匹配,浏览器输入IP地址/text.html,定位到服务器/var/www/html/text.html文件
    
                root /var/www/html;   
    
                index text.html;
    
            }
    
            location / { #普通匹配,浏览器输入IP地址,定位到服务器/usr/local/nginx/html/default.html文件
    
                root html;   
    
                index default.html;
    
            }
    
    
        location ~ image { #正则匹配,浏览器输入IP/image..地址会被命中,定位到/var/www/image/index.html
          root /var/www/image;
          index index.html;
        }
        }
    
Nginx的安装与配置
1559223468959.png