nginx优化

影响性能指标

影响性能方便整体关注

1.网络

网络的流量,网络是否丢包,这些会影响http的请求调用

trace路由跟踪:例如trace www.baidu.com,就会返回去往百度的全部网管

2.系统

        硬件有没有磁盘损坏,磁盘速率

        系统负载,内存,系统稳定性

3.服务

        连接优化,请求优化,根据业务形态做对应的服务设置

4.程序

        接口性能,处理速度,程序执行效率

5.数据库

        每个架构服务器之间都或多或少有一些关联,我们需要将整个架构进行分层,找到对应系统或服务的短板,然后进行优化

6.系统性能优化

        文件句柄,linux一切皆文件,文件句柄可以理解为就是一个索引

        文件句柄会随着我们进程的调用频繁增加

        系统默认对文件句柄有限制,不能让一个进程无限使用

        需要限制每个进程和每个服务器使用多大的文件句柄

        文件句柄是必须要调整的优化参数

设置方式:

系统全局性修改

用户局部性修改

开启系统最大文件数:

vim /etc/security/limits.conf

root soft nofile 65535##软限制

root soft nofile 65535##硬限制

 Nginx性能优化

1.nginx运行工作进程数量

worker_processes 4;        一般设置为cpu的合数或者2倍

2.Nginx运行和CPU亲和力

worker_processes auto;

worker_cpu_affinity 65535;

3.Nginx最大打开文件数

worker_rlimit_nofile 65535;

4.Nginx事件处理模型

use epoll;

5.开启高效传输模式

sendfile on

tcp_nopush no  #防止网络阻塞

6.开启gzip

7.开启expires缓存

8.开启防盗链

什么是cgi,fastcgi,php-fpm?

CGI:就是web服务与php支架的桥梁,CGI就是规定要传哪些数据,以什么样的格式传递给后方处理这个请求的协议。

FastCgi:Fastcgi是用来提高CGI程序性能的,会先启动一个master,解析配置文件,初始化执行环境,然后再启动多个worker.

PHP-FPM:php-fpm是fastcgi管理器。

SERVER优先级:

servername一样的时候,访问的优先级从上而下

实验验证:

server {
        listen       80;
        server_name  textserver2 192.168.100.203;
        location / {
            root   /soft/code2;
            index  index.html index.htm;
        } 
    }       
            
    server {
        listen       80;      
        server_name  textserver1 192.168.100.203;
        location / {
            root   /soft/code1;
            index  index.html index.htm;
        }
    }
server { 
        listen       80;    
        server_name  textserver3 192.168.100.203;
        location / { 
            root   /soft/code3; 
            index  index.html index.htm; 
        } 
    }

先写三个server,然后创建目录

make /soft/done{1..3} -p 

for i in {1..3}; do echo "<h1>Code $i</h1>" > /soft/code"$i"/index.html;done

可能会报出:nginx: [warn] conflicting server name "192.168.100.203" on 0.0.0.0:80, ignored
无伤大雅,只是一个警告

然后就可以进行访问验证了!!,可以将server2和3一次放在在上面进行验证

location的优先级:

完整匹配优先级最高
=进行普通字符精确匹配,完全匹配
^~

表示给普通字符匹配,使用前缀匹配

~*不区分大小写匹配
正则匹配匹配后会继续查找更精确location
~区分大小写

(2)nginx.conf文档编写

        location = /code1/ {
            rewrite ^(.*)$ /code1/index.html break;
        }   
        location ~ /code* {
            rewrite ^(.*)$ /code2/index.html break;
        }     
        location ^~ /code {
            rewrite ^(.*)$ /code3/index.html break;
        }
    
        }

得出优先级从大到小为:

=·······正则匹配·······^~·······(~与~*)同级,谁在上面谁生效

try_files的使用:

   ngixn的try_files按照顺序检查文件是否存在

    server {
        listen       80;
        server_name  localhost;
        root /soft/code/;
        location / {
            try_files $uri @java_page;  ##访问时给$uri进行赋值,例如:http://192.168.100.100/index.html 则url为index.html 
                ##当try_files访问不到$uri时,就跳到下@java_page规则进行查找
        }
        location @java_page {
                proxy_pass http://192.168.100.203:8080;
        }
    }

ROOT和alias用户的区别:

 root也可以被alias用户代替,这两个用户都可以使用相对路径,但是alias用户不添加/的话,就会被认为此文件不是目录,无法找寻index.html文件(相当于ROOT用户使将url路径和自己指定路径拼接一个最终路径使用)(alias是不会拼接url路径)

常见的状态请求码:

200;正常请求

301;永久请求

203;临时请求

400;请求参数错误

401;账户或密码错误(authorization required)

403;权限被拒绝(forbidden)

404;文件没找到(NOT Found)

413;用户上传文件呢限制大小(Requset Entity Too Large)

502;后端服务无响应(bad gateway)

504;后端执行服务超时

网站相关术语:

如果一栋大厦所有工作人员通过1个IP公网接口上网,总共100个设备,当所有人同时请求一个网站,并且刷新了5次,那么请求PV,IP,UV

PV:页面浏览量 500

UV:唯一设备 100

IP:唯一出口 1

网站访问原理: 

1.DNS流程

  (1)查询本地的hosts

  (2)请求本地localDNS

  (3)返回对应的IP

2.HTTP连接

   (1)建立TCP三次握手,发送请求内容,请求头,请求的行,请求的主体

   (2)将请求传递给负载均衡,负载均衡做对应的调度

   (3)如果请求的是静态页面,马默调度至对应的静态群集群即可

   (4)如果请求的是动态页面,将请求调度至动态群集

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摚张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值