nginx的优化及防盗链

目录

一、nginx的优化

1.1 配置nginx隐藏版本号

1.1.1 查看nginx的版本号

1.1.2 nginx隐藏版本号的方法

1.2 修改nginx用户和组

1.2.1 在安装nginx时,编译安装中配置

1.2.2修改主配置文件

 1.3 配置nginx页面缓存的时间

1.3.1 修改nginx的主配置文件

 1.4 nginx的日志分割

1.4.1 编写脚本去进行日志的分割

 1.5 nginx的连接超时

 1.6 更改nginx的进程数

1.7 配置nginx的网页压缩功能

 二、配置防盗链

2.1 当我们在服务器上未开启防盗链时:

 2.2 当我们开启防盗链时

三、fpm参数优化

 总结


一、nginx的优化

1.1 配置nginx隐藏版本号

1.1.1 查看nginx的版本号

①在网页上F12查看

②在xshell上nginx -v

③curl -I http://网站名

1.1.2 nginx隐藏版本号的方法

①第一种:修改配置文件


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

设置关闭显示版本号

 

再去检测可看到版本号已经被隐藏

②第二种:修改配置文件在重新编译

vim /opt/nginx-1.12.2/src/core/nginx.h
#define NGINX_VERSION "8.8。8.8" 					#修改版本号
#define NGINX_VER "IIS" new_VERSION 			#修改服务器类型

 

cd /opt/nginx-1.12.2/   进入到nginx-1.12.2目录下
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
 
make  进行编译  

 

#把/usr/local/nginx/sbin目录下的nginx移到/usr/local/nginx目录下做个备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/
##查看目录下
ls /usr/local/nginx
#把objs目录下的nginx 复制 /usr/local/nginx/sbin目录下
cp objs/nginx /usr/local/nginx/sbin/ 
#查看
ls /usr/local/nginx/sbin/

 

编辑/usr/local/nginx/conf/nginx.conf的文件打开版本号显示
http {
server_tokens on;
}

systemctl restart nginx   重启nginx服务
curl -I http://192.168.58.88   去查看修改后的版本信息

 

1.2 修改nginx用户和组

1.2.1 在安装nginx时,编译安装中配置

  1. ./configure \

  2. --prefix=/usr/local/nginx \

  3. --user=nginx \            #指定用户名

  4. --group=nginx \          #指定组名

  5. --with-http_stub_status_module

  6. make && make install

1.2.2修改主配置文件

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

user nginx nginx;         修改用户为nginx,组也为nginx

 1.3 配置nginx页面缓存的时间

客户端访问时,nginx会把网页缓存数据给客户端,如果设置好数据的缓存时间,可以方便日后客户端在访问时的直接能够返回数据,避免了多次的三次握手的连接请求,加快了连接的速度。

设置缓存时间一般针对的是静态页面,对于动态页面不设置缓存时间

1.3.1 修改nginx的主配置文件

①在主配置文件的location部分加入expires的参数后面跟上缓存的天数

  1. location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {       #加入新的 location,以图片作为缓存对象

  2. root html;

  3. expires 1d; #指定缓存时间,1天

 

②设置网页面

  1. cd /usr/local/nginx/html

  2. 先将diqiu.jpg文件传到/usr/local/nginx/html目录下

  3. 然后vim index.html

  4. <img src="diqiu.jpg"/> #在网页中插入图片

  5. </body>

  6. </html>

 

 1.4 nginx的日志分割

nginx的运行会导致日志的增多会导致磁盘空间不足问题,所以我们要定期的去清理日志。

日志在/usr/local/nginx/logs下面

通过日志分割可以截取保存日志的时间为文件名,对迅速找到相应的日志内容

1.4.1 编写脚本去进行日志的分割

vim /usr/local/nginx/conf/nginx.conf
http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  logs/access.log  main;         ##去除前面#号

}

创建一个日志分割的脚本
#!/bin/bash

day=$(date -d "-1 day" "+%Y%m%d") 
logs="/var/log/nginx"
pid="/usr/local/nginx/logs/nginx.pid" ###设置日期及路径变量
[ -d $logs ] || mkdir -p $logs ###自动创建日志目录
mv /usr/local/nginx/logs/access.log ${logs}/test.com-access.log-$d ###分割新的日志
kill -HUP $(cat $pid) ###生成新的日志
find $logs -mtime +30 -exec rm -rf {} ;

 注释:

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

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

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

 

 1.5 nginx的连接超时

在nginx的主配置文件中的http下有个keepalive的模式。当收到客户端的访问请求时,keepalive可以保证连接时的超时信息可以节省资源,避免对性能的影响。

在vim /usr/local/nginx/conf/nginx.conf的主配置文件下

keepalive_timeout :

第一个65表示:

指定每一个TCP连接的时间最多保持65秒,超时服务器将会在这个时间后关闭连接

第二个180表示:

超过这个时间后浏览器主动关闭连接,这样就不用让服务器去关闭了

client_header_timeout:

客户端向服务端发送一个超时时间 如果客户端在指定时间内没有完成发送一个完整的reguest header,则nginx会返回一个408

client_body_timeout:

指定客户端与服务端建立连接后request body的超时时间

 1.6 更改nginx的进程数

在高并发的场景下,为了处理更多的用户请求避免堵塞,所以要扩大nginx的进程数

查看cpu核的数量

cat /proc/cpuinfo | grep -c "\physical id"

 

配置cpu为4核, 0001表示第一个进程对应的是第一个内核,0010表示第二个进程对应的是第二个内核,以此类推

当我们修改nginx的内核数和连接数量时也要修改系统链接数量

ulimit -a 去查看系统的连接数量

ulimit -n 数字   修改链接数

1.7 配置nginx的网页压缩功能

vim /usr/local/nginx/conf/nginx.conf
gzip on;							#取消注释,开启gzip压缩功能
   gzip_min_length 1k;      		#最小压缩文件大小
   gzip_buffers 4 64k;      		#压缩缓冲区,大小为4个64k缓冲区
   gzip_http_version 1.1;   		#压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
   gzip_comp_level 6;       		#压缩比率(1压缩比最小,处理速度最快  9压缩比最大,效率低)
   gzip_vary on;					#支持前端缓存服务器存储压缩页面
   gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif
 application/x-httpd-php application/javascript application/json;		
#压缩类型,表示哪些网页文档启用压缩功能
 
cd /usr/local/nginx/html
先将图片文件传到/usr/local/nginx/html目录下
vim index.html
#网页中插入图片
<img src="diqiu.jpg"/>
 
systemctl restart nginx.service
 

 

 在我们在网页上测试的时候,可以看到content-type的压缩功能已经显示

 二、配置防盗链

在企业的网站服务器中一般都要去配置防盗链的功能,避免自己服务器的网站被非法的使用造成损失。

2.1 当我们在服务器上未开启防盗链时:

盗链的服务器(192.168.58.100)

①在/var/www/html/index.html下面设置需要盗取的网站

www.ww.com/diqiu.jpg是被盗的服务器的网站 

②添加域名的映射

echo "192.168.58.88 www.ww.com" >> /etc/hosts

echo "192.168.58.100 www.ss.com" >> /etc/hosts

③在/usr/local/nginx/conf/nginx.conf 下设置地址

④搜索自己的域名就可以看到被盗服务器下的内容

 2.2 当我们开启防盗链时

在主服务器下设置防盗链(192.168.58.88 www.ww.com)

①配置/usr/local/nginx/conf/nginx.conf

vim /usr/local/nginx/conf/nginx.conf
http {
......
	server {
	......
        location ~*\.(jpg|gif|swf)$ {
          valid_referers *.ww.com ww.com;
          if ( $invalid_referer ) {
          rewrite ^/ http://www.ww.com/error.png;
          #return 403;
          }
        }
	......
	}
}

————————————————
版权声明:本文为CSDN博主「醉凡尘¢ World1y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WuDan_1112/article/details/124889068

其中:

~* \.(jpg|gif|jepg|bmp|ico)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif或.swf结尾的文件;

valid_referers:设置信任的网站,可以正常使用图片;

none:允许没有http_refer的请求访问资源(根拼Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的),如http://www.jzm.com/caocao.jpg
我们使用 http://www.jzm.com访问显示的图片,可以理解成http://www.jzm.com/caocao.jpg 这个请求是从http://www.jzm.com这个链接过来的。

blocked:允许不是http://开头的,不带协议的请求访问资源;
if语句:链接来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作,即进行重写或返回403页面。

②在/usr/local/nginx/html下导入两张图片

③准备网页 

cd /usr/local/nginx/html
将diqiu.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html
<img src="diqiu.jpg"/>
</body>
</html>

echo "192.168.58.88 www.ww.com" >> /etc/hosts

echo "192.168.58.100 www.ss.com" >> /etc/hosts

在盗链服务器上配置(192.168.58.100 www.ss.com)

①配置盗链的路径

②配置主配置文件

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

 

③域名解析

echo "192.168.58.88 www.ww.com" >> /etc/hosts

echo "192.168.58.100 www.ss.com" >> /etc/hosts

验证访问盗链机子的地址

会发现会访问到报页面

三、fpm参数优化

 1、Nginx 的 PHP 解析功能实现如果是交由 FPM 处理的,为了提高 PHP 的处理速度,可对
FPM 模块进行参数跳转。
2、FPM 优化参数:
pm 使用哪种方式启动 fpm 进程,可以说 static 和 dynamic,前者将产生固定数量的 fpm 进程,后者将以动态的方式产生 fpm 进程
pm.max_children :static 方式下开启的 fpm 进程数
pm.start_servers :动态方式下初始的 fpm 进程数量
pm.min_spare_servers :动态方式下最大的 fpm 空闲进程数
pm.max_spare_servers :动态方式下最大的 fpm 空闲进程数
3、优化原因:服务器为云服务器,运行了个人论坛,内存为1.5G,fpm进程数为20,内存消耗近1G,处理比较慢
4、优化参数调整
FPM启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多
可以有20个进程存在
 

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

 总结

nginx的优化

1.配置nginx影藏版本号;

2.修改nginx用户和组;

3.配置nginx网页缓存时间

4.配置nginx实现连接超时

5.更改nginx工作进程数

6.配置nginx实现网页压缩功能

7.实现nginx的日志切割

8.nginx防盗链的配置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值