LInux系统架构----Nginx的深入优化

LInux系统架构----Nginx的深入优化

一.更改进程数

  • 在高并发的坏境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞,使用ps aux查看Nginx运行的进程个数

    [root@server2 ~]# ps aux | grep nginx
    root 25314 0.0 0.0 119160 2180 ? Ss 3月14 0:00 nginx: master process /usr/sbin/nginx
    nginx 25315 0.0 0.2 151852 7996 ? S 3月14 0:00 nginx: worker process
    nginx 25316 0.0 0.2 151852 7996 ? S 3月14 0:00 nginx: worker process
    nginx 25317 0.0 0.2 151852 7996 ? S 3月14 0:00 nginx: worker process
    nginx 25318 0.0 0.2 151852 7996 ? S 3月14 0:00 nginx: worker process
    root 25577 0.0 0.0 12348 1148 pts/2 S+ 00:15 0:00 grep --color=auto nginx

注:其中master process是Nginx的主进程,worker process是Nginx的子进程

  • 修改Nginx的配置文件中的worker_process参数,一般设置为CPU的个数或者核数,在高并发的情况下可以设置为Cpu的个数或者核数的2倍,可以先查看CPU的核数确定参数

    [root@server2 ~]# cat /proc/cpuinfo |grep -c "physical"
    8

  • 在nginx的主配置文件,设置参数为2,与cpu的核数相同,运行进程数设置多一些,响应客户端访问请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度

    [root@server2 ~]# vim /etc/nginx/nginx.conf
    user nginx;
    worker_processes 2;
    [root@server2 ~]# systemctl restart nginx.service

    [root@server2 ~]# ps aux |grep nginx
    root 25631 0.0 0.0 119160 2176 ? Ss 00:32 0:00 nginx: master process /usr/sbin/nginx
    nginx 25632 0.0 0.2 151852 8048 ? S 00:32 0:00 nginx: worker process
    nginx 25633 0.0 0.2 151852 8048 ? S 00:32 0:00 nginx: worker process
    root 25635 0.0 0.0 12348 1124 pts/2 S+ 00:33 0:00 grep --color=auto nginx

注:开启了一个主进程和2两个子进程,由此可见参数起到作用,当有多核cpu时,设置参数 worker_cpu_affiniity

二.网页压缩

  • Nginx的ngx_http_gizp_module压缩模块提供了对文件内容压缩的功能,允许Nginx服务器将输出内容发送到客户端之前进行压缩,以节省网站的带宽。

  • 默认情况下,Nginx安装的该模块,只需要在配文件中加入相应的压缩功能

    #开启压缩功能
    gzip on;
    #表示申请4个单位为16KB的内存作为压缩结果流缓存,默认值时申请与原始数据大小相同的内存空间来存储gzip压缩结果
    gzip_buffers 4 64k;
    #用于设置识别http协议版本,默认时1.1,目前大部分浏览器以及支持解压,但是处理很慢,消耗资源多
    gzip_http_version 1.1;
    用来指定压缩比,1压缩最小,处理速度块,9压缩最多,处理速度慢
    gzip_comp_level 2;
    #用于设置允许压缩的页面最小字节数
    gzip_min_length 1k;
    #该选项可以让前端的缓存服务器缓存经过gzip压缩的页面
    gzip_vary on;
    #压缩类型,对那些网页文档启动压缩功能
    gzip_types test/plain text/javascript application/x-javascript text/css text/html text/xml application/xml;

  • 网页压缩操作

    #在nginx的主页面中加入图片
    [root@server2 ~]# vim /usr/share/nginx/html/test.html
    nginx html page

  • 设置压缩参数

    复制代码
      ##在http模块中添加
      gzip  on;
      gzip_buffers 4 64k;
      gzip_http_version 1.1;
      gzip_comp_level 2;
      gzip_min_length 1k;
      gzip_vary on;
      gzip_types test/plain text/javascript application/x-javascript text/css text/xml image/jpg image/jpeg image/png image/gif application/xml application/xml+rss;

三.防盗链

  • 在企业网站服务中一般要配置防盗链功能,以避免网站被非法盗用,造成经济损失,也避免不必要的带宽浪费
  • Nginx的防盗链功能非常强大,在默认情况之下,只需要进行简单的配置,即可实现防盗链功能
  • 防盗链具体操作
  • 准备两台主机模拟盗链与防盗链
类别 IP地址 域名
源主机 10.1.1.171 www.kgc.com
盗链主机 10.1.1.172 www.yun.com
  • 设置源主机

    [root@server1 ~]# vim /etc/hosts
    10.1.1.171 www.kgc.com
    10.1.1.172 www.yun.com
    [root@server1 html]# ls
    1.jpg 404.html 50x.html index.html nginx-logo.png poweredby.png test.html

查看源主机

设置盗链主机

复制代码
[root@server2 ~]# vim /etc/hosts
10.1.1.171 www.kgc.com
10.1.1.172 www.yun.com
[root@server2 html]# ls
1.jpg  404.html  50x.html  index.html  nginx-logo.png  poweredby.png  test.html

查看盗链结果

在源主机上设置防盗链模块

复制代码
[root@server1 ~]# vim /etc/nginx/nginx.conf
        location / {
                valid_referers none blocked www.kgc.com;  //满足此条规则,不跳转
                if ($invalid_referer) {             //如果为真 
                 rewrite ^/ http://www.kgc.com/error.png;      //跳转错误页面
                }
        }

验证盗链结果

四.FPM参数优化

  • 在LNMP架构中php-fpm模块处理动态请求,为了提高PHP的处理速度,可以对FPM模块进行参数的调整
  • FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic
  • static将产生固定数据的fpm进程,可以使用pm.max_children指定的启动的进程数量
  • dynamic将以动态的方式产生fpm进程,这种方式产生的参数则要根据服务器的内存与服务器负载进行调整

dynamic方式下的参数

选项 描述
pm.max_children 指定启动的进程的最大的数量
pm.start.servcie 动态方式下初始的ftpm的进程数量
pm_mim_space_servers 动态方式下最小的fpm空闲进程数
pm_max_space_servers 动态方式下最大的fpm空闲进程数

| pm.max_children | 指定启动的进程的最大的数量 |

| pm.start.servcie | 动态方式下初始的ftpm的进程数量 |

| pm_mim_space_servers | 动态方式下最小的fpm空闲进程数 |

| pm_max_space_servers | 动态方式下最大的fpm空闲进程数 |

相关推荐
t1987512837 分钟前
Linux 上的 Tomcat 端口占用排查
linux·tomcat·firefox
小狗爱吃黄桃罐头1 小时前
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介
linux·arm开发·学习
吾日三省Java1 小时前
微服务体系下将环境流量路由到开发本机
微服务·系统架构·团队开发
地衣君2 小时前
Ubuntu 配置使用 zsh + 插件配置 + oh-my-zsh 美化过程
linux·运维·ubuntu
2401_858286112 小时前
OS11.【Linux】vim文本编辑器
linux·运维·服务器·编辑器·vim
朱包林2 小时前
day27-shell编程(自动化)
linux·运维·服务器·网络·shell脚本
kaede2 小时前
Linux实现线程同步的方式有哪些?
linux·运维·云计算
德先生&赛先生2 小时前
Linux编程:2、进程基础知识
linux
Listennnn2 小时前
AI系统的构建
人工智能·系统架构
子正3 小时前
一键编译包含多个独立模块和应用的工程(linux cmake)
linux·运维·cmake