美文网首页
Nginx配置文件说明和优化

Nginx配置文件说明和优化

作者: Odven | 来源:发表于2020-06-18 10:01 被阅读0次

1) nginx文件结构和配置文件说明

...       #全局块
events {     #events块
    ...
}
http   #http块
{
    ...  #http全局块

    server    #server块
    {  
        ...    #server全局块
        location [PATTERN]  #location块
        {
            ...
        }

        location [PATTERN] 
        {
            ...
        }
    }

    server
    {
        ...
    }

  ...   #http全局块
}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。

(1) location
语法    location [=|~*|^~|@]/uri/{…}
location会尝试根据用户请求中的uri来匹配上面的uri表达式,如果可以匹配,就选择lcoation块中的配置来处理用户请求。当然,匹配方式是多样的。
location = /uri    =开头表示精确匹配,只有完全匹配上才能生效。精确匹配,如果该选项匹配,则,只匹配该选项,不再向下匹配其他选项
location ^~ /uri   ^~ 开头对URL路径进行前缀匹配,并且在正则之前。普通字符匹配,如果该选项匹配,则,只匹配该选项,不再向下匹配其他选项
location ~ pattern  ~开头表示区分大小写的正则匹配。
location ~* pattern  ~*开头表示不区分大小写的正则匹配。
location /uri     不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。
location /      通用匹配,任何未匹配到其它location的请求都会匹配到
@ 表示仅用于Nginx服务内部请求之间的重定向,例如 error_page,try_files
注意:     
    匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个匹配的正则表达式将停止搜索。
    一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用=前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用^~前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

(2) root和alias的区别:
location /img/ {    
    alias /var/www/image/;
    }  #若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
location /img/ {    
    root /var/www/image;
    }  #若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。

(3) nginx之配置proxy_set_header:
proxy_set_header Host $host;  # 其中这个Host是一个自定义的变量名,名字可以随意取,这样做完之后,$ host等于server_name指令的值被放在Host这个变量里了,然后后端应用程序可以接收到
proxy_set_header X-Real-IP $remote_addr;  # 其中这个X-real-ip是一个自定义的变量名,名字可以随意取,这样做完之后,用户的真实ip就被放在X-real-ip这个变量里了,然后后端应用程序可以接收到
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 当客服端通过代理访问时,$proxy_add_x_forwarded_for能获得真实客服端IP
proxy_redirect off;  # NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改

(4) 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。
第一种:
location /proxy/ {
    proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/test.html
第二种(相对于第一种,最后少一个 / )
location /proxy/ {
    proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/test.html
第三种:
location /proxy/ {
    proxy_pass http://127.0.0.1/aaa/;
}
代理到URL:http://127.0.0.1/aaa/test.html
第四种(相对于第三种,最后少一个 / )
location /proxy/ {
    proxy_pass http://127.0.0.1/aaa;
}
代理到URL:http://127.0.0.1/aaatest.html

(5) error_page语法
error_page code [ code... ] [ = | =answer-code ] uri | @named_location
使用字段:http, server, location, location 中的if字段 
nginx指令error_page的作用是当发生错误的时候能够显示一个预定义的uri,比如:
error_page 502 503 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}  
这样实际上产生了一个内部跳转(internal redirect),当访问出现502、503的时候就能返回50x.html中的内容,这里需要注意是否可以找到50x.html页面,所以加了个location保证找到你自定义的50x页面。

同时我们也可以自己定义这种情况下的返回状态吗,比如:    
error_page 502 503 =200 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}
这样用户访问产生502 、503的时候给用户的返回状态是200,内容是50x.html

也可以设置一个named location,然后在里边做对应的处理。
error_page 500 502 503 504 @jump_to_error;
location @jump_to_error {    
    proxy_pass http://backend;
}

同时也能够通过使客户端进行302、301等重定向的方式处理错误页面,默认状态码为302。    
error_page 403      http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;
同时error_page在一次请求中只能响应一次,对应的nginx有另外一个配置可以控制这个选项:recursive_error_pages默认为false,作用是控制error_page能否在一次请求中触发多次。

由于在nginx配置中,设置了limit_req的流量限制,导致许多请求返回503错误代码,在限流的条件下,为提高用户体验,希望返回正常Code 200,且返回操作频繁的信息:

(6) try_files的使用及理解
语法: try_files file ... uri 或 try_files  file  ...  =code
作用域: server location
try_files $uri $uri/ /index.html @rewrites =404;
location @rewrites{
    rewrite ^/(.*)$ /$1 last;
 }
关于单页面,刷新404问题,如vue + nginx的配置, vue路由必须先加载 index.html 或者XX.js 才能识别到路由,故直接刷新页面会出现404,这时候最好到做法,是使用try_files 进行尝试,如果获取不到资源,加载index.html 再利用 rewrite的 last参数,保持路由路径不变,从而实现刷新页面。
但需要注意:此种解决方法需要 vue和nginx部署在同一台服务器上,这样try_files才能在服务器硬盘上找到index.html文件。

(7) nginx 变量使用
所有的 Nginx变量在 Nginx 配置文件中引用时都须带上 $ 前缀
在 Nginx 配置中,变量只能存放一种类型的值,有且也只存在一种类型,那就是字符串类型
变量的创建和赋值操作发生在全然不同的时间阶段。Nginx 变量的创建只能发生在 Nginx 配置加载的时候,或者说 Nginx 启动的时候;而赋值操作则只会发生在请求实际处理的时候。这意味着不创建而直接使用变量会导致启动失败,同时也意味着我们无法在请求处理时动态地创建新的 Nginx 变量
Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块
Nginx变量名的可见范围虽然是整个配置,但每个请求都有所有变量的独立副本,或者说都有各变量用来存放值的容器的独立副本,彼此互不干扰
Nginx变量值容器的生命期是与当前正在处理的请求绑定的,而与location无关。
有一种方式叫内部跳转,意思是在处理请求的过程中,于服务器内部,从一个 location 跳转到另一个 location 的过程,这时候这些location是共用一套Nginx量的容器副本的
server {
   listen 80;
   server_name localhost;
    ......
    set $root "/var/www/html/"; 
    location / {
        root $root;
        index.html index.htm index.php;
        try_files $uri $uri/ /index.html =404;
    }
}

访问某个php应用的时候我只想让内部的某个IP访问,其他的IP都转到另一个PHP上。如下:
访问test.php,且IP不等222.222.222.222的跳转到666666.php
set $test;
if ( $request_uri ~* /img/test.php ) {
    set $test "P";
}
if ( $http_x_forwarded_for !~* ^222\.222\.222\.222.* ) {
    set $test "${test}C";
}
if ( $test = "PC" ) {  #当条件符合 访问test.php并且 ip不是222.222.222.222的 转发到666666.php
    rewrite ^(.*)$ /img/666666.php permanent;  
}

(8) nginx内置变量   
Nginx官方链接地址  
http://nginx.org/en/docs/varindex.html

$args                      这个变量等于GET请求中的所有参数,所以是复数带有s。例如,foo=123&bar=blahblah;这个变量只可以被修改
$arg_param                 获取GET请求中param参数的值。如/index.html?order=111, 则$arg_order=111
$binary_remote_addr        二进制码形式的客户端地址
$body_bytes_sent           已发送的消息体字节数
$content_length            HTTP请求信息里的"Content-Length"
$content_type              请求信息里的"Content-Type"
$document_root             针对当前请求的根路径设置值
$document_uri              与$uri相同
$host                      请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;    
$http_cookie               cookie 信息 
$http_referer              来源地址
$http_user_agent           客户端代理信息
$http_via                  最后一个访问服务器的Ip地址
$http_x_forwarded_for      相当于网络访问路径。    
$limit_rate                对连接速率的限制          
$remote_addr               客户端地址
$remote_port               客户端端口号
$remote_user               客户端用户名,认证用
$request                   用户请求信息
$request_body              用户请求主体
$request_body_file         发往后端的本地文件名称      
$request_filename          当前请求的文件路径名
$request_method            请求的方法,比如"GET"、"POST"等
$request_uri               请求的URI,带参数   
$server_addr               服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费)
$server_name               请求到达的服务器名
$server_port               请求到达的服务器端口号
$server_protocol           请求的协议版本,"HTTP/1.0"或"HTTP/1.1"
$uri                       请求的URI,可能和最初的值有不同,比如经过重定向之类的

(9) 地址重写格式【总结】
rewrite 旧地址 新地址 [选项];
选项:
last 不再读其他rewrite
break 不再读其他语句,结束请求
redirect 临时重定向
permament 永久重定向

2) Nginx优化

1. 优化Nginx并发量
socket: Too many open files (24)                //提示打开文件数量过多
...
worker_processes = auto;  # 工作进程数,与CPU核心数量一致,设置为auto可以自动匹配
worker_rlimit_nofile 65535;  # 工作进程最大可打开文件数:进程最大可打开文件数受限于操作系统,可通过 ulimit -n 命令查询  设置ulimits:ulimit -SHn 65535 

events {
worker_connections  100000;  # 单个工作进程可以允许同时建立外部连接的数量 , 数字越大,能同时处理的连接越多
}

优化Linux内核参数(最大文件数量)
ulimit -a                        //查看所有属性值
ulimit -Hn 100000                //设置硬限制(临时规则)
ulimit -Sn 100000                //设置软限制(临时规则)
vim /etc/security/limits.conf
......
*               soft    nofile            100000
*               hard    nofile            100000
#该配置文件分4列,分别如下:
#用户或组    硬限制或软限制    需要限制的项目   限制的值


查看worker_rlimit_nofile是否生效
ps aux | grep nginx
root      17256  0.0  0.0 128756  3144 ?        Ss   15:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
www-data  17257  0.0  0.1 156916 31816 ?        S    15:29   0:00 nginx: worker process
www-data  17258  0.0  0.1 156916 31816 ?        S    15:29   0:00 nginx: worker process
www-data  17259  0.0  0.1 156916 31816 ?        S    15:29   0:00 nginx: worker process

cat /proc/17257/limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             63035                63035                processes 
Max open files            65535                65535                files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       63035                63035                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us  

2. 优化Nginx数据包头缓存
<center><h1>414 Request-URI Too Large</h1></center>        //提示头部信息过大
修改Nginx配置文件,增加数据包头部缓存大小
......
http {
    client_header_buffer_size    1k;        //默认请求包头信息的缓存    
    large_client_header_buffers  4 4k;        //大请求包头部信息的缓存个数与容量
    ......
}

3. 浏览器本地缓存静态数据
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    expires        30d;            //定义客户端缓存时间为30天
    # add_header Cache-Control private max-age=3600;
}
(1) Cache-Control:
设置相对过期时间, max-age指明以秒为单位的缓存时间. 若对静态资源只缓存一次, 可以设置max-age的值为315360000000 (一万年). 比如对于提交的订单,为了防止浏览器回退重新提交,可以使用Cache-Control之no-store绝对禁止缓存,即便浏览器回退依然请求的是服务器,进而判断订单的状态给出相应的提示信息!

Http协议的cache-control的常见取值及其组合释义:
no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器.
no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源).
private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器.
public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等.
max-age: 相对过期时间, 即以秒为单位的缓存时间.
no-cache, private: 打开新窗口时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器.
-  private, 正数的max-age: 后退时候不会访问服务器.
-  no-cache, 正数的max-age: 后退时会访问服务器.
(2) Expires:
设置以分钟为单位的绝对过期时间, 优先级比Cache-Control低, 同时设置Expires和Cache-Control则后者生效. 也就是说要注意一点:  Cache-Control的优先级高于Expires

4. 自定义报错页面
优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到
修改Nginx配置文件,自定义报错页面
......
error_page   404  /40x.html;    //自定义错误页面
......
vim /usr/local/nginx/html/40x.html        //生成错误页面
迷失在外太空。。。

5. 如何查看服务器状态信息
编译安装时使用--with-http_stub_status_module开启状态页面模块
……
location /status {
    stub_status on;
    allow xxx;
    allow xxx;
    deny all;
}
……
curl http://localhost/status
Active connections: 188 
server accepts handled requests
       90166    90166   189364 
Reading: 0 Writing: 1 Waiting: 187
 Active connections:当前活动的连接数量。
Accepts:已经接受客户端的连接总数量。
Handled:已经处理客户端的连接总数量(一般与accepts一致,除非服务器限制了连接数量)。
Requests:客户端发送的请求数量。
Reading:当前服务器正在读取客户端请求头的数量。
Writing:当前服务器正在写响应信息的数量。
Waiting:当前多少客户端在等待服务器的响应。

6. 对页面进行压缩处理
http {
    ......
    gzip on;                            //开启压缩
    gzip_min_length 1000;                //小文件不压缩
    gzip_comp_level 4;                //压缩比率
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  //对特定文件压缩,类型参考mime.types
......
}

7. 服务器内存缓存
如果需要处理大量静态文件,可以将文件缓存在内存,下次访问会更快。
http { 
    open_file_cache          max=2000  inactive=20s;
    open_file_cache_valid    60s;
    open_file_cache_min_uses 5;
    open_file_cache_errors   off;
    //设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
    //文件句柄的有效时间是60秒,60秒后过期
    //只有访问次数超过5次会被缓存
} 

8. 删除不需要的模块
Nignx是模块化设计的软件,需要什么功能与模块以及不需要哪些模块,都可以在编译安装软件时自定义,使用--with参数可以开启某些模块,使用--without可以禁用某些模块。最小化安装永远都是对的方案!

9. 修改版本信息,并隐藏具体的版本号
默认Nginx会显示版本信息以及具体的版本号,这些信息给攻击者带来了便利性,便于他们找到具体版本的漏洞。如果需要屏蔽版本号信息,执行如下操作,可以隐藏版本号。
......
http{
     server_tokens off;                            //在http下面手动添加这么一行
     ......
}
vim +48 src/http/ngx_http_header_filter_module.c
//注意:vim这条命令必须在nginx-1.12源码包目录下执行!!!!!!
//该文件修改前效果如下:
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
//下面是我们修改后的效果:
static u_char ngx_http_server_string[] = "Server: gy" CRLF;
static u_char ngx_http_server_full_string[] = "Server: gy" CRLF;
static u_char ngx_http_server_build_string[] = "Server: gy" CRLF;
//修改完成后,再去编译安装Nignx,版本信息将不再显示为Nginx,而是gy

10. 限制并发量
开头说过抗DDOS是一个系统工程,通过优化系统和软件配置,只能防御小规模的CC攻击,对于大规模攻击、四层流量攻击、混合攻击来说,基本上系统和应用软件没挂,带宽就打满了。下面是我在工作中使用过的防御DDOS的方式
DDOS、CC攻击者会发送大量的并发连接,占用服务器资源(包括连接数、带宽等),这样会导致正常用户处于等待或无法访问服务器的状态。

Nginx提供了一个ngx_http_limit_req_module模块,可以有效降低DDOS、CC攻击的风险,操作方法如下:
所述ngx_http_limit_req_module模块,用于限制每一个定义的密钥的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率。使用“漏斗”方法完成限制。
… …
http{
    ...... 
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {
        listen 80;
        server_name localhost;
        limit_req zone=one burst=5;
        ......
        }
}

句法: limit_req_zone key zone=name:size rate=rate [sync];
内容: http

句法: limit_req zone=name [burst=number] [nodelay | delay=number];
内容: http,server,location

备注说明:
// limit_req_zone语法格式如下:
// limit_req_zone key zone=name:size rate=rate;
// 上面案例中是将客户端IP信息存储名称为one的共享内存,内存空间为10M
// 1M可以存储8千个IP信息,10M可以存储8万个主机连接的状态,容量可以根据需要任意调整
// 每秒中仅接受1个请求,多余的放入漏斗
// 漏斗超过5个则报错
// 速率以每秒请求数(r / s)的形式指定。如果希望速率小于每秒一个请求,则以每分钟请求数(r / m)指定。例如,每秒半请求为30r / m。

Nginx提供了一个ngx_http_limit_conn_module模块,可以有效降低DDOS、CC攻击的风险,操作方法如下:
该ngx_http_limit_conn_module模块用于限制每个已定义密钥的连接数,特别是来自单个IP地址的连接数。
并非所有连接都被计数。仅当连接具有服务器正在处理的请求并且已经读取了整个请求标头时,才对连接进行计数。
http {
    # 客户端IP地址用作密钥。注意,代替`$remote_addr`,该 `$binary_remote_addr`变量在这里使用。该`$remote_addr`变量的大小可以从7至15个字节而变化。
    # 存储状态在32位平台上占用32或64字节的内存,在64位平台上始终占用64字节的内存。`$binary_remote_addr`对于IPv4地址,变量的大小始终为4个字节,对于IPv6地址,变量的大小始终为16个字节。
    # 在32位平台上,存储状态始终占据32或64字节,在64位平台上,存储状态始终占据64字节。1兆字节的区域可以保留约3.2万个32字节状态或约1.6万个64字节状态。
    # 如果区域存储空间已用完,服务器将把错误返回给所有其他请求。
    limit_conn_zone $binary_remote_addr zone=addr:10m;  # 设置共享内存区域和给定键值的最大允许连接数。当超过此限制时,服务器将错误返回给所有其他请求
    ......
    server {
        ......
        location /download/ {
            limit_conn addr 1;  # 一次每个IP地址只允许一个连接。
        }
    }
}

句法: limit_conn_zone key zone=name:size;
内容: http

句法: limit_conn zone number;
内容: http,server,location

11. 拒绝非法的请求
http{   
    ......
    server {
        listen 80;
        # 这里,!符号表示对正则取反,~符号是正则匹配符号
        # 如果用户使用非GET或POST方法访问网站,则retrun返回444的错误信息
        if ($request_method !~ ^(GET|POST)$ ) {
            return 444;
        }
        location / {
            ........;
        }    
    }
}

12. 防止buffer溢出
当客户端连接服务器时,服务器会启用各种缓存,用来存放连接的状态信息。
如果攻击者发送大量的连接请求,而服务器不对缓存做限制的话,内存数据就有可能溢出(空间不足)。
http{
    client_body_buffer_size  1K;  # 指定缓冲区大小,如果请求大于缓冲区大小,请求将被写为临时文件,默认的缓存区大小为网页大小的2倍
    client_header_buffer_size 1k;  # 指定Header头缓冲区大小,一般1k足够,如果cookie较大可以加大该值
    client_max_body_size 1k;  # 指定客户端可以请求内容的最大值,如果超过这个大小会报413 Request Entity Too Large。如果服务器上传了一个100m的文件,则应该调大这个值,否则客户端无法下载。
    large_client_header_buffers 2 1k;  # 设置可以请求的头缓冲区大小,客户端的请求页面的头信息不能大于这个值,否则会报Request URI Too Large 414 或 Bad Request 400 错误
     ……
}

13. 配置sendfile及详细说明
http {
    ......
    sendfile    on;
    ......
}
语法: sendfile on | off;
默认值: sendfile off;
上下文: http,server,location,if in location
指定是否使用sendfile系统调用来传输文件。
sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。

相关文章

  • Nginx配置文件说明和优化

    1) nginx文件结构和配置文件说明 2) Nginx优化

  • nginx的工作流程

    nginx的优化1、nginx可以从哪里优化对于nginx本身,最重要的也就是他的配置文件,在这个配置文件中,可以...

  • 综合架构之服务优化(后篇)

    主要内容: 1.nginx优化2.php优化3.安全优化 nginx服务优化 1.nginx配置文件移动,该如何启...

  • Linux下Nginx无权访问文件问题

    nginx version: nginx/1.14.0 问题说明 当前版本下nginx安装后默认配置文件/etc/...

  • 7. Nginx安装和基础配置

    1. Nginx编译安装 nginx-1.18.0.tar.gz 2. Nginx核心配置 2.1 配置文件说明 ...

  • Nginx 优化

    Linux系统环境 一、简化server { } 标签,优化Nginx.conf主配置文件 二、隐藏Nginx h...

  • nginx 优化,突破十万并发

    nginx优化 突破十万并发 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: worker_pr...

  • Nginx高并发配置

    nginx优化 突破十万并发 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 查看物理CPU个数...

  • nginx优化,内核优化

    Nginx优化详解-------超详细 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. w...

  • 2019-03-28 nginx优化

    Nginx优化详解-------超详细 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. w...

网友评论

      本文标题:Nginx配置文件说明和优化

      本文链接:https://www.haomeiwen.com/subject/ffsjxktx.html