Nginx优化与防盗链

nginx -t      //测试配置文件语法
nginx: the confiquration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginxconf/nginx.conf test is successful

Nginx服务优化

在企业信息化应用环境中,服务器的安全和响应速度需要根据实际情况进行相应参数
配置,以达到最优的用户体验。

隐藏版本号

在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击。在隐藏版本号之前,可以使用Fiddler工具抓取数据包,查看Nginx版本,也可以在CentOS中使用命令curl -l http://192.168.0.102/查看。

curl-l http://192.168.10.102

修改配置文件方式

将 Nginx 主配置文件中的 server tokens 选项值设置为 off,如没有该配置项,加上即可

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

http {
                             //省略内容
include
mime.types;
default type application/octet-stream;
server tokens off;           //关闭版本号

若使用了 PHP 处理动态网页,且 PHP 配置文件中配置了fastcgi paramSERVER SOFTWARE选项

再次访问网址,只显示 Nginx,版本号已经隐藏。

systemctl restart nginx
curl - http:/192.168.0.102/
HTTP/1.1 200 OK
Server: nginx
.......                //省略内容

设置版本信息
Nginx 源码文件 nginx-1.12.0/src/core/nginx.h 包含了版本信息,可以随意设置,然后重新编译安装,隐藏版本信息。

vim nginx-1.12.0/src/core/nginx.h     //编辑源码文件

cd nginx-1.12.0/

/configure--prefix=/usr/local/nginx..user=nginx-group=nginx .with-http stub status module && make && make instal

cd /usr/localnginx/conf/

修改用户与组

Nginx 运行时进程需要有用户与组的支持,用以实现对网站文件读取时进行访问控制。主进程由 root 创建,子进程由指定的用户与组创建。Nginx 默认使用 nobody 用户帐号与组帐号,一般也要进行修改。

指定用户与组的参数

编译 Nginx 时指定用户与组,就是配置 Nginx 时,在./configure 后面指定用户与组的参数

./configure --prefix=/usr/localnginx 1 --user=nginx --group=nginx1  //指定用户名是 nginx

配置用户与组

修改 Nginx 配置文件 nginx.conf 指定用户与组。

cd /usr/localnginx/conf
vim nginx.conf
user nginx nginx;     //修改用户为 nginx ,组为 nginx

重启 Nginx 服务并查看进程运行情况,从执行结果中可以得出 Nginx 服务的主进程由root 帐户创建,子进程则由 nginx 创建。

ps aux |grep nginx

日志切割

随着 Nginx 运行时间的增加,产生的日志也会逐渐增加,为了方便掌挥 Nginx 的运行状态,需要时刻关注 Nginx 日志文件。

写脚本/optfenge.sh,把Nginx的日志文件/usrlocalnginx/logs/access.log 移动到目录/var/oginginx 下面,以当前时间做为日志文件的名称,然后用 kil -USR1 创建新的日志文件/usr/local/nginxhogs/access.log,最后删除 30 天之前的日志文件。

vi /opt/fenge.sh
#!'binvbash
# Filename: fenge.sh
d-$(date -d"-1 day+%Y%m%d?
logs _path="ivarloginginx"pid path."usrNocalinginx/logsinginx pid"I-d Slogs_path ]ll mkdir -p slogs_path              //创建日志文件目录

执行/optfenge.sh,测试日志文件是否被切割

chmod +x loptfenge.sh   //添加权限
opt/fenge.sh            //执行分割脚本
ls /varnoginginx
lesl.com-acoess 10g-20200123   //按日期分割了日志文件

设置 crontab 任务,定期执行脚本自动进行日志分割。

crontab -e

设置连接超时

为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。可以修改配置文件nginx.conf,设置keepalive_timeou超时时间。

vi nginx.conf
http {
#keepalive_timeout 0;
keepalive_timeout 65 180;

keepalive timeou 第一个参数指定了与客户端的 keep-alive 连接超时时间,服务器将会在这个时问后关闭连接。

vi nginx.conf
http {
keepallve_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;

Nginx 深入优化

更改进程数
在高并发环境中,需要启动更多的 Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻寨。使用ps aux 命令查看 Nginx 运行进程的个数。从命令执行结果可以看出master process 是 Nginx 的主进程,开启了1个:worker process 是子进程,子进程也是开启了1个

ps aux l grep 

參数设置为 4,和 CPU 的核数相同。运行进程数多一些,响应客户端访问请求时,Ngin就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度。

 vi nginx.confworker_processes 4;

修改完后,重启服务,使用ps aux 查看运行进程数的变化情况。从下面执行结果中可以看出开启了1个主进程和4个子进程,参数设置起到了作用。

systemctl restart nginx
ps aux | grep nginx

认情况下,Nginx 的多个进程可能更多的跑在一颗 CPU 上。为了充分利用硬件多核多 CPU,可以分配不同的进程给不同的 CPU 处理。在一台4 核 CPU 服务器上,可以设置每个进程分别由不同的 CPU 核心处理,达到 CPU 的性能最大化。

vi nginx.conf
worker_processes 4;

配置网页压缩

Nginx 的 ngx_http_gzip_module 压缩模块提供了对文件内容压缩的功能,允许 Ngin)服务器将输出内容发送到客户端之前进行压缩,以节约网站的带宽,提升用户的访问体验。

gzip min length1k:用于设置允许生缩的页面最小学节数
gzip_buffers 4 16k:表示申请 4个单位为 16k 的内存作为压缩结果流缓存,默认值
是申请与原始数据大小相同的内存空间来存储 gzip 压缩结果;
gzip_hlip_version 1.0:用于设置识别 htp 协议版本,默认是 1.1,目前大部分浏览
器已经支持 gzip 解压,但处理较慢,也比较消耗服务器 CPU 资源:
gzip_comp_level 2:用米指定 gzip 压缩比,1 压缩比最小,处理速度最快;9 压缩
比最大,传输速度快,但处理速度最慢,使用默认即可:
gzip_types text'plain:压缩类型,是对哪些网页文档启用压缩功能:
gzip_vary on:选项可以让前端的缓存服务器缓存经过 gzip 压缩的页面。

Nginx 的配置文件,加入压缩功能参数。

vi nginx.conf

 配置防盗链
在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了不必要的带宽浪费。

防盗链需要准备两台主机模拟盗链

主机模拟盗链域名
IP 地址
用途
192.168.0.102wvw.bt.com源主机192.168.0.104ww.test.com盗链主机

修改 Windows 的C:Windowsi System32 vdriversl etc hosts 文件,设置域名和 IP
映射关系。

192.168.0.102 wnww.bt.com

192.168.0.104 ww.test.con

修改两台 CentOS 的 hosts 文件,设置域名和 IP 映射关系。

把图片logojpg放到源主机(bt.com)的工作目录下。

cd /usr/localnginxhtm
ls

在盗链主机(test.com)的工作目录编写盗链页面 index,html,盗取源主机(bt.com
的图片。

cd jusrlocalinginxhtml
vi index.html
<IDOCTYPE html>
chiml>
chead>

<p><em>Thank you for using nginx,</em></p>
<img src="httpJ'www.bt.comlogo.jpg"/>
</body>
</html>

访问盗链的网页 http://www,lest,com/ndex.html 查看是否盗链成功

配置 Nginx 防盗链

Nginx 的防盗链原理是加入location 项,用正则表达式过滤图片类型文件,对于信任的网址可以正常使用,不信任的网址返回相应的错误图片。在源主机(bt.com)的配置文件中加入以下代码

cd /usr/localinginxeonf
vi nginx.conf
    location -"1(gifipglpnglipeg) {
       valid referers *bt.com bt.com;
       if (Sinvalid_referer) { 
           rewrite *y http:/hwwbt.com/error.png;
       }
   }

则执行后面的操作,即进行重写或返回 403 页面。

把图片 error.png 放到源主机(bt.com)的工作目录下。

cd fusr/localnginxhtml/
ls
50x.html indexhiml
logo.jpg erar.png

重启服务器,重新访问 http://www.test,com/index.html,显示的是被重写的图片

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值