Nginx网页优化


和Apache优化类似

Nginx隐藏版本号

修改配置

curl -I http://20.0.0.10
vi /etc/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;               ##关闭版本号

systemctl stop nginx
systemctl start nginx
curl -I http://20.0.0.10

在这里插入图片描述
在这里插入图片描述

修改源码

删除server_tokens off

vi nginx-1.12.2/src/core/nginx.h
#define nginx_version      1010000  --修改发行时间
#define NGINX_VERSION      "1.1.2"    --修改版本号
#define NGINX_VER          "IIS/" NGINX_VERSION  --修改软件

systemctl stop nginx
cd nginx-1.12.2
make && make install
systemctl start nginx
curl -I http://20.0.0.10

在这里插入图片描述

Nginx用户与组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制,Nginx默认使用nobody用户账号与组账号。
修改的方法:
编译安装时指定用户与组
修改配置文件指定用户与组

编译安装时指定
创建用户账号与组账号,如nginx。
编译安装时–user与–group指定Nginx服务的运行用户与组账号

cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module 

修改配置文件法指定

vi /etc/nginx.conf 
修改    user  nginx nginx;

systemctl stop nginx
systemctl start nginx
ps aux | grep nginx 

在这里插入图片描述

Nginx网页缓存时间

vi index.html
<img src="c.jpg" />

vi /etc/nginx.conf
location ~\.(gif|jpg|jepg|pngico)$ {
            root   html;
            expires 1h;
        }

访问20.0.0.10,进行抓包
在这里插入图片描述
注:效果出不来,清除网页缓存。

Nginx的日志切割

思路

设置时间变量
设置保存日志路径
将目前的日志文件进行重命名
重建新日志文件
删除时间过长的日志文件
设置cron任务,定期执行脚本自动进行日志分割

流程

vim fg.sh
#!/bin/bash
# 日志分割
d=$(date -d "-1 day" "+%Y-%m-%d")        #时间变量前天
logs_path="/var/log/nginx"                       #日志保存路径
pid_path="/usr/local/nginx/logs/nginx.pid"   #进程文件保存路径
[ -d $logs_path ] || mkdir -p $logs_path     #-d:条件判断,目录是否存在,没有创建
mv /usr/local/nginx/logs/access.log ${logs_path}/aa.com.access.log-$d  
kill -HUP $(cat $pid_path)        #当服务重新加载后,会重新生成一个新的日志文件,以便后续的日志分割操作
find $logs_path -mtime +60 | xargs rm -rf    #找到超过60天的日志进行删除

chmod +x fg.sh 
cd /usr/local/nginx/logs/
chmod +x access.log 
cd
./fg.sh 
 cd /usr/local/nginx/
[root@server nginx]# ll

在这里插入图片描述

crontab -e   #编写任务计划
0 1 * * * /usr/bin/sh /root/fenge.sh
#* * * * *
#分钟 小时 日期 月份 星期

crontab -l    #查看任务计划

在这里插入图片描述

Nginx实现连接超时

为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。

参数

Keepalive_ timeout:
设置连接保持超时时间

Client header timeout:
指定等待客户端发送请求头的超时时间

Client body_ _timeout:
设置请求体读超时时间

流程

vi /etc/nginx.conf
添加修改
keepalive_timeout  65 180; #前面参数是服务器主动关闭的超时时间(默认是65秒),后面参数是客户机浏览器主动关闭的时间
client_header_timeout 80;  #等待客户端发送请求头的超时时间超时会发送408错误
client_body_timeout 80;    #设置客户端发送请求体超时时间 

nginx -t
systemctl stop nginx
systemctl start nginx

访问http://20.0.0.10,抓包。
在这里插入图片描述

Nginx运行进程数

概述

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞。
一般设为CPU的个数或者核数。在高并发情况下可设置为CPU个数或者核数的2倍。增加进程数,可减少了系统的开销,提升了服务速度。使用ps aux查看运行进程数的变化情况。默认情况,Nginx的多 个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU。

方法

修改配置文件,修改进程配置参数

cat /proc/cpuinfo | grep -c "physical"    
vi /etc/nginx.conf 
添加修改
worker_processes  8;     #工作进程
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;       #CPU或者核的分配情况
use epoll;
worker_connections  4096;  #单个并发连接数进行修改

nginx -t
systemctl stop nginx
systemctl start nginx
ps aux | grep nginx   查看状态

在这里插入图片描述

Nginx实现网页压缩功能

概述

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能。允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节省网站带宽,提升用户的访问体验,默认已经安装。可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。

参数

压缩参数说明
gzip on开启gzip压缩输出
gzip_ min_ length 1k设置允许压缩的页面最小字节数
gzip__buffers 4 16k申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与始数据大小相同的内存空间来存储gzip压缩结果
gzip_ http_ version 1.0设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理较慢,也比较消耗服务器CPU资源
gzip_ comp_ level 2指定gzip压缩比,1压缩比最小,处理速度最快; 9压缩比最大,传输速度快,但处理速度最慢
gzip_ types text/plain压缩类型,对哪些网页文档启用压缩功能
gzip_vary on让前端缓存服务器缓存经过gzip压缩的页面

流程

vi /etc/nginx.conf 
添加修改    
    gzip  on;                #去注释开启gzip压缩功能
    gzip_min_length 1k;      #压缩阀值
    gzip_buffers 4 16k;      #buffer大小为4个16k缓存区大小
    gzip_http_version 1.1;   #压缩版本
    gzip_comp_level 6;       #压缩比率,最小为1,处理速度快,传输速度慢,9最大压缩比,处理速度慢,传输速度快
    gzip_types text/plain text/css text/javascript application/x-javascript application/javascript application/json application/x-httpd-php application/xml image/jpg image/jpeg image/gif image/png;
    gzip_disable "MSIE [1-6]\.";     #配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
    gzip_vary on;            #选择支持very header可以让前端的缓存服务器缓存经过gzip压缩的页面

nginx -t
systemctl stop nginx
systemctl start nginx

访问20.0.0.10,抓包。
在这里插入图片描述

Nginx实现防盗链

概述

在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失。Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理。

配置说明

~* .(jipglgif|swf) $ :匹配以.jpg或gif或.swf结尾的不区分大小写的文件。
valid_ referers: 设置信任的网站,即能弓|用相应图片的网站。
网址或者域名: referer中包含相关字符串的网址。
i语句:如果链接的来源域名不在valid_ referers所列出的列表中,$invalid_ referer为1, 则执行后面的操作,即进行重写或返回403页面。

流程

IP用途
20.0.0.10源主机
20.0.0.12盗链网站

盗链

yum -y install httpd
vi /var/www/html/index.html
<html><body>Welcome!<img src="http://20.0.0.10/c.jpg"/></body></html>

systemctl stop firewalld 
setenforce 0
systemctl start httpd

访问20.0.0.12
在这里插入图片描述
源主机
在 /usr/local/nginx/html/目录下,添加error.png图片。

vi /etc/nginx.conf 
添加
location ~* \.(jpg|gif|swf)$ {
       valid_referers none blocked *.aa.com aa.com 20.0.0.10;
       if ($invalid_referer) {
       rewrite ^/ http://20.0.0.10/error.png;
    }  
}

nginx -t
systemctl stop nginx
systemctl start nginx

访问20.0.0.12
在这里插入图片描述

对FPM模块进行参数优化

概述

Nginx的PHP解析功能实现如果是交由FPM处理的,为了 提高PHP的处理速度, 可对FPM模块进行参数的调整根据服务器的内存与服务负载,调整FPM模块参数。

FPM优化参数

Static的方式的参数:
pm.max_ children: 指定启动的进程数量

Dynamic方式的参数:
pm.max_ children: 指定启动进程数的最大值
pm.start servers: 动态方式下初始的fpm进程数
pm.min_ spare_ servers: 动态方式下最小的fpm空闲进程数
pm.max_ spare_ servers: 动态方式下最大的fpm空闲进程数

流程

vi /usr/local/php/etc/php-fpm/www.conf
pm = dynamic
pm.max_children = 20    #static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5         #动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2     #动态方式下最少空闲进程数
pm.max_spare_servers = 8   #动态方式下最大空闲进程数

ps aux | grep php-fpm      #查看 默认进程2个
pkill php-fpm                  #终止进程
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini     #重新加载
ps aux | grep php-fpm   

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页