Nginx优化与防盗链(隐藏版本号、修改用户与组、缓存时间、日志切割、连接超时、更改进程数、配置网页压缩、配置防盗链、fpm参数优化)

本文介绍了如何对Nginx进行优化,包括隐藏版本号、修改用户与组、设置缓存时间、日志切割、调整连接超时、更改进程数、配置网页压缩以及详细的防盗链设置。同时,还涉及了FPM参数的优化,以提升Nginx服务器的性能和安全性。
摘要由CSDN通过智能技术生成

隐藏版本号

  1. 安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
  1. 编译安装Nginx
cd /opt
tar zxvf nginx-1.15.9.tar.gz -C /opt/

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

make && make install                    //编译并安装

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		//创建软链接、方便系统识别nginx的命令
  1. 创建运行用户、组
useradd -M -s /sbin/nologin nginx   //创建程序用户,以便准确的控制访问
  1. 增加Nginx系统服务
vim /etc/init.d/nginx
以下内容:
#!/bin/bash
# chkconfig: - 99 20							// chkcofig - “-” 表示不启用开机启动管理 (同时 若不加“#”, chkconfig add nginx 会加载不到配置)
# description: Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"				//命令程序文件位置(nginx)
PID="/usr/local/nginx/logs/nginx.pid"			//pid文件
case "$1" in
start)
   $COM
   ;;
stop)
   kill -s QUIT $(cat $PID)
   ;;
restart)
   $0 stop
   $0 start
   ;;
reload)
   kill -s HUP $(cat $PID)
   ;;
*)
       echo "Usage: $0 {start|stop|restart|reload}"
       exit 1
esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx							#添加为系统服务
systemctl stop nginx
systemctl start nginx

在这里插入图片描述
可以使用 Fiddler 工具抓取数据包,查看 Nginx版本
也可以在 CentOS 中使用命令 curl -I 显示响应报文首部信息

curl -I http://192.168.41.135          //查看版本号

在这里插入图片描述

方法一:修改配置文件方式

vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;					//添加,关闭版本号
    ......
}

systemctl restart nginx                 //查看版本号
curl -I http://192.168.41.135           //查看版本号

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

方法二:修改源码

  • 将方法一中关闭的版本号重新打开
vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;   #打开
vim /opt/nginx-1.15.9/src/core/nginx.h

13 #define NGINX_VERSION      "1.0.0"                  //将原始的1.15.9修改为1.0.0
14 #define NGINX_VER          "IIS" NGINX_VERSION      //将原始的Nginx修改为IIS

cd /opt/nginx-1.15.9            //重新编译安装
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install

systemctl  restart nginx         //重启服务
curl -I http://192.168.41.135    //查看版本号是否隐藏

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

修改用户和组

  • 若没有安装前创建用户,则在此服务中默认使用的是nobody
vim /usr/local/nginx/conf/nginx.conf
	user  nginx nginx;			##将前面的#注释掉,然后修改用户与组为nginx
	worker_processes  1;
	
systemctl restart nginx
ps aux | grep nginx		#查看用户与组是否修改成功

在这里插入图片描述

设置缓存时间

vim /usr/local/nginx/conf/nginx.conf

 42         location / {
 43             root   html;
 44             index  index.html index.htm;
 45         }
 46         location ~ \.(gif|jpg|jepg|bmp|ico)$ {      //增加图片识别
 47          root   html;
 48          expires 1d;              //设置缓存时间为1天
 49         }

在这里插入图片描述

cd /usr/local/nginx/html/              //需要添加张图片在nginx首页中

在这里插入图片描述

 14 <h1>Welcome to nginx!</h1>
 15 <img src="61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg"/>  //15行插入图片

在这里插入图片描述

  • 注:现在的ip是192.168.41.145 在这里插入图片描述
    使用浏览器直接访问 . ipg图片
    http://192.168.41.145/61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg
    在这里插入图片描述

日志切割

  1. 创建脚本
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

在这里插入图片描述
2. 给与权限执行分割

chmod +x fenge.sh
./fenge.sh

#查看日志分割
[root@localhost nginx]# ls /var/log/nginx/

#修改时间,再次执行脚本
[root@localhost nginx]# date -s 20210623
[root@localhost nginx]# sh -x /opt/fenge.sh 
[root@localhost nginx]# ls /var/log/nginx/

#周期任务定时执行
crontab -e
0 1 * * * /opt/fenge.sh

在这里插入图片描述
小知识
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime

ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

atime(accesstime):
当使用这个文件的时候就会更新这个时间。

mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

连接超时

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

vim /usr/local/nginx/conf/nginx.conf
 30     keepalive_timeout  100;       //指定每个tcp连接最多可以保持65秒
 31     client_header_timeout 80;     //等待客户端发送请求头的超时时间 超时会发送408错误
 32     client_body_timeout 80;       //设置客户端发送请求体超时时间

在这里插入图片描述

  • 检查语法

在这里插入图片描述

更改进程数

cat /proc/cpuinfo | grep -c "physical"   //cpu核数
ps aux | grep nginx   //一个主进程中包含一个子进程

vim /usr/local/nginx/conf/nginx.conf
	worker_processes  2;   //修改为核数相同或者2倍;2核cpu,开启2个进程
	worker_cpu_affinity 01 10;  //设置每个进程由不同cpu处理,进程数配为2时为0001、0010、0100、1000

PS:
01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。

	worker_processes     4;	  //2核cpu,开启4个进程
	worker_cpu_affinity 01 10 01 10;
PS:开启了四个进程,它们分别对应着开启2个CPU内核

	worker_processes     4;	   //4个cpu,开启4个进程
	worker_cpu_affinity 0001 0010 0100 1000;
ps:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

配置网页压缩

vim /usr/local/nginx/conf/nginx.conf
 37     #gzip  on;      
 38     gzip  on;                    //取消注释,开启gzip压缩功能
 39     gzip_min_length 1k;          //最小压缩文件大小  
 40     gzip_buffers 4 16k;          //压缩缓冲区,大小为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]\.";  //配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
 45     gzip_vary on;                 //支持前端缓存服务器存储压缩页面

vim index.html
 14 <h1>Welcome to nginx!</h1>
 15 <img src="61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg"/>      //网页中插入图片

systemctl restart nginx.service 

在这里插入图片描述

盗链与防盗链

盗链

准备三台机器
盗链端: 192.168.41.146 #nginx服务
服务端:192.168.41.140 #nginx服务
win10 : 192.168.41.160 #指向服务端DNS /hosts

  • 配置盗链
#服务端添加映射
vim /etc/hosts
192.168.41.146 www.a.com
#添加图片
cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html     bbs     index.html    caomei.jpg  index.php
#修改index.html.插入图片
<h1>Welcome to nginx!</h1>
<img src="caomei.jpg"/>


#盗链端添加映射
vim /etc/hosts
192.168.41.140 daolian
192.168.41.146 www.a.com

[root@localhost html]# vim index.html 
<h1>Welcome to nginx!</h1>
<img src="http://www.a.com/caomei.jpg"/>
  • Win10添加映射并访问网页
    在这里插入图片描述

先提权在这里插入图片描述

  • 确认后再配置文件中添加域名IP地址映射关系,保存
    在这里插入图片描述
    在这里插入图片描述

防盗链

服务端操作:
[root@localhost html]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html          bbs         index.html  caomei.jpg  index.php
[root@localhost html]# rz -E
rz waiting to receive.
[root@localhost html]# ls
50x.html          bbs         fd.png      index.php      caomei.jpg  index.html
#增加不一样的图片格式,为了防盗链不同的体现

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf

 56          location ~*\.(jpg|gif|swf)$ {
 57             valid_referers none blocked *.a.com a.com;
 58             if ( $invalid_referer ) {
 59                rewrite ^/ http://www.a.com/fd.png;
 60             }
 61         }

 systemctl restart nginx.service 
  • 使用win10访问域名+盗链端地址:

在这里插入图片描述

在这里插入图片描述

fpm参数优化

vim /usr/local/php/etc/php-fpm.conf 
pid = run/php-fpm.pid

vim /usr/local/php/etc/php-fpm.d/www.conf

–96行–
pm = dynamic				#fpm进程启动方式,动态的

–107行–
pm.max_children=20			#fpm进程启动的最大进程数

–112行–
pm.start_servers = 5		#动态方式下启动时默认开启的进程数,在最小和最大之间

–117行–
pm.min_spare_servers = 2	#动态方式下最小空闲进程数

–122行–
pm.max_spare_servers = 8	#动态方式下最大空闲进程数

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`			#重启php-fpm
netstat -anpt | grep 9000
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值