Nginx优化小操作

Nginx优化小操作

一、隐藏版本

在生产环境中,需要隐藏Nginx的版本号,避免安全漏洞泄露。
因为每个版本都有他自带的缺陷,避免缺陷暴露被攻击。

1、如何查看版本号:

1、本地:curl -I http://192.168.65.129
2、浏览器:可以直接在浏览器上(F12),开发者工具—>network—>重新加载页面---->选择请求—>选择headlers
---->查看版本
Nginx优化小操作_第1张图片
Nginx优化小操作_第2张图片

2、如何隐藏版本号:

①修改配置文件
②修改源码

2.1修改配置文件:

1、进入主配置文件(vim /usr/local/nginx/conf/nginx.conf)

http {
     
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;     //插入,关闭版本号     

Nginx优化小操作_第3张图片
2、重启、查看
Nginx优化小操作_第4张图片

2.2修改源码:

注:/src:放源码,里面有个/core,里面是核心模块。
1、修改文件

vim /opt/nginx-1.12.0/src/core/nginx.h
#define nginx_version      1015009
#define NGINX_VERSION      "1.15.9"   ----------->修改
#define NGINX_VER          "nginx/" NGINX_VERSION  ------->修改

Nginx优化小操作_第5张图片
Nginx优化小操作_第6张图片
2、重新编译

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

make && make install

3、打开版本号(server_tokens on)
4、重启,查看
注:nginx里面可能有work子进程关不干净,需要手动沙掉。

二、修改用户和组

注:若没有安装前创建用户,则在此服务中默认使用的是nobody

vim /usr/local/nginx/conf/nginx.conf
user nginx nginx ;   //将前面的#注释掉,nobody改为nginx

chown给予属主属组
systemctl restart nginx.service
ps aux | grep nginx //查看用户与组是否修改成功

三、设置缓存时间(避免重复请求,加快访问速度)针对静态页面

1、修改主配置文件:

vim /usr/local/nginx/conf/nginx.conf <<
在http{
     server{
     location{
     下添加 <<
location ~ \.(gif|jpg|jepg|bmp|ico)$ {
        //匹配以这些格式结尾的
 		  #添加图片识别     
          root   html;      
          expires 1d; 
 		  #设置缓存时间为1天      
    }  
---->wq

2、上传图片到目录:

cd /usr/local/nginx/html   //图片上传至这个目录
vim index.html

Welcome to nginx!</h1> "1.jpg"/> //添加图片信息 systemctl restart nginx //重启服务

3、测试:
192.168.65.129 192.168.65.129/1.jpg
or curl -I测试
Nginx优化小操作_第7张图片

四、日志分割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要关注日志文件。
分割的意义:避免过大的日志文件无法监控。(固定点---->时间戳)
方法:通过Nginx信号控制功能的脚本实现
计划任务,周期分割。

1、编写shell脚本

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

vim /opt/fenge.sh <<
#!/bin/bash
#Filename:fenge.sh
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 
mv /usr/local/nginx/logs/access.log ${
     logs_path}/test.com-access.log-$d
kill -HUP $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf
---->wq

chmod +x /opt/fenge.sh   //给予权限
注:date -d "-1 day" "+%Y%m%d":唯一性区分
-d----修改
-1 day----前一天
+ ----连接符
%Y%m%d----年月日
kill -QUIT  结束 -HUP 平滑重载 类似reload -USR1日志分割 -USR2 平滑升级

2、设置cron:(在业务关闭时进行切割)

crontab -l
0 1 * * * /opt/fenge.sh
systemctl restart nginx
netstat -natp | grep nginx

3、执行查看

bash -x fenge.sh 
ls /var/log/nginx/
date -s 20210627
./fenge.sh 
ls /var/log/nginx/
date

注:Linux重要的时间参数:ctime atime mtime
windows文件的三种时间属性:创建时间、修改时间、访问时间
Linux下文件也有三种:访问时间(atime)最后被使用,命令脚本、修改时间(mtime)vi编辑、状态修改时间(ctime)inode和block内容改变时间
权限、属组属主、链接数等。

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

分为三类:连接保持的超时时间;等待客户端发送请求头的超时时间;请求体读超时时间。
指定每个TCP链接最多可以保持多长时间,Nginx默认65s,有的浏览器60s。
如果为0,就是禁止keepalive链接。

vim /usr/local/nginx/conf/nginx.conf <<
32     #keepalive_timeout  0;
33     keepalive_timeout  100;       
34     client_header_timeout 80;     //等待客户端发送请求头超时时间,超时发送408
35     client_body_timeout 80;       //请求体超时时间
----->wq
nginx -t

六、更改进程数:(高并发场景,需要启动更多的进程保证快速响应)

cat /proc/cpuinfo | grep -c "physical"
ps aux | grep nginx
vim /usr/local/nginx/conf/nginx.conf <<
2 #user  nobody;
3 worker_processes  2;
4 worker_cpu_affinity 01 10;
---->wq

七、网页压缩:提升用户访问体验,节约带宽

vim /usr/local/nginx/conf/nginx.conf <<
 37     #gzip  on;
 38     gzip  on; 
 39     gzip_min_length 1k;
 40     gzip_buffers 4 16k;
 41     #gzip_http_version 1.1;  
 42     gzip_comp_level 6;    
 43     gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg     image/png image/gif application/xml text/javascript application/x-httpd-php appli    cation/javascript application/json;
 44     gzip_disable "MSIE [1-6]\.";
 45     gzip_vary on;       
----->wq
cd /usr/local/nginx/html
vim index.html 
systemctl restart nginx

八、FPM模块参数优化

对FPM模块进行参数优化
Nginx的PHP解析功能实现如果是交由FPM(fastcgi 进程管理器)处理的,为了提高PHP的处理速度。可以对FPM模块进行参数跳转
Ngingx是通过FPM调用的PHP

FPM优化参数:
pm  #使用哪种方法启动fpm进程,可以说是static和dynamic。前者将产生固定数量的fpm进程,后者将以动态的方式产生fpm进程。
pm.max_children  #static方式下开启的fpm进程数(静态/动态)
pm.start_server  #动态方式下初始的fpm进程数量(动态)
pm.min_spare_servers  #动态方式下最小的fpm空闲进程数(动态)
pm.max_spare_servers  #动态方式下最大的fpm空闲进程数(动态)

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

九、盗链防盗链

1、环境:

盗链端:nginx服务 192.168.226.134
服务端:nginx服务 192.168.226.132
win10:指向服务端DNS/修改HOSTS 192.168.226.160

2、盗链:

一、每台主机添加映射
1、服务端
vim /etc/hosts <<
192.168.226.132 www.dog.com
2、盗链端:
vim /etc/hosts <<
192.168.226.132 www.dog.com
192.168.226.134 daolian
3、win10:
位置:
C:\WINDOWS\System32\drivers\etc----hosts,双击记事本方式打开
注:首次修改需要添加权限
属性–安全–高级–改为完全控制
192.168.226.132 www.dog.com----ctrl+s保存
二、关闭防火墙、防护
三、配置源主机(192.168.226.132)DNS服务
四、添加图片

cd /usr/local/nginx/html/    //在这个目录下上传图片

五、修改index.html

 14 

Welcome to nginx!</h1> 15 "http://www.dog.com/dog.jpg"/>

六、win10访问服务端
http://www.dog.com/dog.jpg ----右键,查看源,记录下来,设置盗链。
七、设置盗链

vim index.html <<
"http://www.dog.com/dog.jpg">
--->wq
systemctl start nginx

八、win10访问盗链端

3、防盗链:

一、修改服务端主机的nginx配置文件

vim nginx.conf <<
56         location / {
     
57             root   html;
58             index  index.html index.htm;
59         }
60      location ~*\.(jpg|gif|swf)$ {
     
61             valid_referers none blocked *.dog.com dog.com;                 
62             if ( $invalid_referer ) {
     
63                rewrite ^/ http://www.dog.com/1.jpg;
64             }
65         }
---------->wq
nginx -t
systemctl restart nginx

你可能感兴趣的:(nginx,linux)