文章目录

  • 一、Nginx 优化
    • 1. 隐藏版本号
      • (1) 隐藏版本号的原因
      • (2) 版本号查看
        • ① nginx -v (仅限 web 浏览器)
        • ② curl -I
        • ③ 浏览器查看
      • (3) 隐藏方法
        • ① 修改配置文件
        • ② 修改源码文件,重新编译
    • 2. 修改用户与组
    • 3. 缓存时间
    • 4. 日志分割
    • 5. 连接超时
    • 6. 更改进程数
    • 7. 配置网页压缩
  • 二、盗链与防盗链
    • 1. 盗链
      • 1.1 nginx 服务端配置
      • 1.2 盗链主机配置
      • 1.3 windows 测试机配置
      • 1.4 windows 访问测试
    • 2. 防盗链
      • 2.1 nginx 服务端配置
      • 2.2 windows 访问测试
  • 三、FPM 参数优化

一、Nginx 优化

1. 隐藏版本号

(1) 隐藏版本号的原因

  为了安全,如果暴露版本信息,黑客可以通过版本信息得知该版本存在的漏洞,进而对服务器进行攻击。隐藏版本信息可以避免黑客有的放矢的进行破坏。

(2) 版本号查看

① nginx -v (仅限 web 浏览器)

[root@c7-1 ~]#nginx -v
nginx version: nginx/1.12.2

② curl -I

[root@c7-1 ~]#curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 08 Oct 2021 12:29:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 04 Oct 2021 12:54:14 GMT
Connection: keep-alive
ETag: "615af976-264"
Accept-Ranges: bytes

③ 浏览器查看

(3) 隐藏方法

① 修改配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confhttp {......server_tokens off;    #添加此行内容,关闭版本号的显示
......[root@localhost ~]# systemctl restart nginx

② 修改源码文件,重新编译

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confhttp {......#server_tokens off;    #注释此行内容,开启版本号的显示
......[root@localhost ~]# vim /opt/nginx-1.12.2/src/core/nginx.h##修改版本号和名称,可伪装成其他服务(例如 apache、mysql 等)
#define NGINX_VERSION      "5.7.20"
#define NGINX_VER          "mysql/" NGINX_VERSION#重新编译
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_modulemake -j 4 && make install
systemctl restart nginx

#隐藏成功
[root@c7-1 ~]#nginx -v
nginx version: mysql/5.7.20

2. 修改用户与组

[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.confuser  nginx nginx;         #第二行,取消注释,修改用户为nginx,组为nginx[root@localhost nginx-1.12.0]# systemctl restart nginx
[root@localhost nginx-1.12.0]# ps aux | grep nginx
#主进程由root创建,子进程由nginx创建
root      42095  0.0  0.0  20500   628 ?        Ss   23:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     42096  0.0  0.0  22948  1404 ?        S    23:29   0:00 nginx: worker process
root      42103  0.0  0.0 112676   976 pts/0    R+   23:29   0:00 grep --color=auto nginx

3. 缓存时间

  当 nginx 将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度。一般针对静态网页进行设置,对动态网页不设置缓存时间。

[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf......server {......location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {   #新建location,以图片作为缓存对象root   html;expires 1d;                              #指定缓存时间为1天,一天半为1d12h}......}
......[root@localhost nginx-1.12.0]# systemctl restart nginx

在网页中加入图片后测试

[root@c7-1 /usr/local/nginx/html]#ls
50x.html  index.html  index.html.bak  test.jpg[root@c7-1 /usr/local/nginx/html]#vim index.html #加入图片
</h1>
<img src="test.jpg"/>
</body></html>

4. 日志分割

编写脚本

[root@c7-1 /opt]# vim log_cut.sh #!/bin/bash
#Filename:log_cut.shlastday=$(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-$lastday
mv /usr/local/nginx/logs/error.log $logs_path/test.com_error.log-$lastday
#移动并重命名日志文件kill -USR1 $(cat $pid_path)
#重建新日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;
#删除30天之前的日志文件

脚本测试

[root@c7-1 /opt]#chmod +x log_cut.sh
[root@c7-1 /opt]#./log_cut.sh
[root@c7-1 /opt]#cd /var/log/nginx/
[root@c7-1 /var/log/nginx]#ls
test.com_access.log-20211007  test.com_error.log-20211007

添加计划任务

[root@c7-1 ~]#crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@c7-1 ~]#crontab -l
0 1 * * * /opt/log_cut.sh

5. 连接超时

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

[root@c7-1 ~]#vim /usr/local/nginx/conf/nginx.confhttp {......keepalive_timeout  65 180;client_header_timeout 80;client_body_timeout 80;
......
}[root@localhost nginx]# systemctl restart nginx

6. 更改进程数

  • 在高并发环境中,需要启动更多的 nginx 进程以保证快速响应,用以处理用户的请求,避免造成阻塞
  • 默认情况下,nginx 的多个进程可能更多的跑在一颗 CPU 上,可以分配不同的进程给不同的 CPU 处理,以充分利用 cpu 性能
  • worker_processes 最多开启 8 个,8 个以上性能就不会再提升了,而且稳定性会变低
[root@c7-1 ~]#nproc --all   #显示所有 CPU 数目
4
[root@c7-1 ~]#nproc            #显示当前进程可用的 CPU 数目
4
[root@c7-1 ~]#ps aux | grep nginx  #查看 nginx 主进程中包含几个子进程
root       6069  0.0  0.0  20544   608 ?        Ss   10:47   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      6070  0.0  0.0  23072  1632 ?        S    10:47   0:00 nginx: worker process
root       6693  0.0  0.0 112728   972 pts/3    S+   10:56   0:00 grep --color=auto nginx[root@c7-1 ~]#vim /usr/local/nginx/conf/nginx.conf
#user  nobody;
worker_processes  4;        #修改为核数相同或者 2 倍
worker_cpu_affinity 0001 0010 0100 1000;
#两个核就是 01 10 ;
# 8 个核就是 00000001 00000010 00000100 ...... 01000000 10000000events {worker_connections  4096;   #单个工作进程可以允许同时建立外部连接的数量
}[root@c7-1 ~]#systemctl restart nginx

7. 配置网页压缩

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

vim /usr/local/nginx/conf/nginx.conf
......
http {......gzip on;                  #开启 gzip 压缩功能gzip_min_length 1k;       #压缩阈值,最小压缩为 1kgzip_buffers 4 16k;       # buffer 大小为 4 个 16k 缓冲区大小gzip_http_version 1.1;    #压缩版本(默认不设置)gzip_comp_level 6;        #压缩比率,最小为 1,处理速度快,传输速度慢,9 最大压缩比,处理速度慢,传输速度快(建议5-6)gzip_disable "MSIE [1-6]\.";  #配置禁用 gzip 条件,支持正则,表示 ie6 以下不启用 gzipgzip_vary on;                 #支持前端缓存服务器存储压缩页面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 application/javascript application/json;#支持的压缩类型......
}nginx -t
cd /usr/local/nginx/html/        #首页中插入 cat.jpg 图片进行测试vim index.html<h1>Welcome to nginx!</h1><img src="test.jpg"/>         #插入一行systemctl restart nginx

浏览器查看(注意清除浏览器缓存)

二、盗链与防盗链

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

主机 IP
nginx 服务端 192.168.10.12
盗链端 192.168.10.20
Windows10 192.168.10.10

1. 盗链

1.1 nginx 服务端配置

预安装 nginx 服务
echo "192.168.10.12 www.nginx-server.com" >>/etc/hosts
上传 test.jpg 到 /usr/local/nginx/html 目录

1.2 盗链主机配置

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
ntpdate ntp1.aliyun.com#安装 httpd 服务
yum -y install httpd
systemctl start httpd && systemctl enable httpd#配置临时 DNS 映射
echo "192.168.10.12 www.nginx-server.com" >>/etc/hosts
echo "192.168.10.20 www.daolian.com" >>/etc/hostscat > /var/www/html/index.html <<EOF
<html><body><h1>this is a "盗链" test</h1>
<img src= "http://www.nginx-server.com/test.jpg"/>
</body></html>
EOFsystemctl restart httpd

1.3 windows 测试机配置

#在 hosts 文件添加映射,需要管理员权限
C:\Windows\System32\drivers\etc\hosts


1.4 windows 访问测试

访问 nginx-server 查看图片

访问盗链端

2. 防盗链

2.1 nginx 服务端配置

修改配置文件,添加如下内容

[root@nginx ~]#vim /usr/local/nginx/conf/nginx.confhttp {......server {......location ~* \.(jpeg|gif|jpg|swf)$ {#匹配不区分大小写,以 .jpeg/.gif/.jpg/.swf 结尾的文件valid_referers none blocked *.nginx-server.com nginx-server.com;
#设置信任来源可以正常访问资源if ( $invalid_referer ) {rewrite ^/ http://www.nginx-server.com/daolian.png;#return 403;
#如果链接的来源域名不在 valid_referers 列表中,则 rewrite 跳转页面或者返回 403 页面}}......}
......
}[root@nginx ~]#nginx -t
[root@nginx ~]#systemctl restart nginx上传 daolian.jpg 图片到 /usr/local/nginx/html 目录下

2.2 windows 访问测试

三、FPM 参数优化

nginx 的 PHP 解析功能实现如果是交由 FPM 处理的,为了提高 PHP 的处理速度,可对 FPM 模块进行参数的调整。

  • 首先安装带 FPM 模块的 PHP 环境,保证 PHP 可以正常运行
  • FPM 进程有两种启动方式,由 pm 参数指定,分别是 static 和 dynamic,前者将产生固定数据的 fpm 进程,后者将以动态的方式产生 fpm 进程
  • static 方式可以使用 pm.max_children 指定启动的进程数量。dynamic 方式的参数则要根据服务器的内存与服务负载进行调整,参数下所示
选项 说明
pm.max_children 指定启动的进程的最大的数量
pm.start_servers 动态方式下初始的 ftpm 进程数量
pm.min_spare_servers 动态方式下最小的 fpm 空闲进程数
pm.max_spare_servers 动态方式下最大的 fpm 空闲进程数

假设云服务器上运行了个人论坛,内存为 1.5 GB ,fpm 进程数为20,内存消耗将近 1GB ,处理速度较慢,需对参数进行优化处理

[root@server ~]# vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid[root@server ~]# vim /usr/local/php/etc/php-fpm.d/www.conf
pm = dynamic                                       #将以动态的方式产生fpm进程
pm.max_children=20                                     #static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5                                   #动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2                           #动态方式下最少空闲进程数
pm.max_spare_servers = 8                           #动态方式下最大空闲进程数#FPM 启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多可以有20个进程存在
#重启 php-fpm
[root@server ~]# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
[root@server ~]# netstat -anpt | grep 9000

Nginx 优化与防盗链相关推荐

  1. Nginx优化与防盗链

    Nginx优化与防盗链 一.隐藏nginx版本号 1.1查看版本号 1.2隐藏版本信息 二.修改用户与组 三.缓存时间 四.日志分割 五.连接超时 六.更改进程数 七.配置网页压缩 八.配置防盗链 8 ...

  2. 学会Nginx优化与防盗链预防坏蜀黍

    Nginx优化与防盗链 文章目录 一.Nginx优化 1.配置nginx隐藏版本号 修改配置文件 修改源码文件,重新编译安装 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 ...

  3. Nginx优化之防盗链

    Nginx优化之防盗链 文章目录 Nginx优化之防盗链 前言 实验环境 实验步骤 前言 之前,我们知道了Apache的防盗链,接下来我们来看看nginx的防盗链. 有时候在浏览网页的时候,会遇到某些 ...

  4. Nginx优化与防盗链(隐藏版本号、配置缓存时间、日志分割、修改进程数、配置连接超时、使用gzip压缩页面、防盗链设置,fpm优化)

    文章目录 隐藏Nginx版本号 网页压缩 网页压缩配置 网页缓存时间 网页缓存时间设置 更改Nginx运行进程数 连接超时 nginx防盗链设置 盗链网站 配置httpd 日志分割 fpm参数优化 隐 ...

  5. 九爷 带你了解 nginx优化与防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP  ...

  6. centos 7.6 —— Nginx 配置网页防盗链FPM参数优化

    centos 7.6 -- Nginx 配置网页防盗链&&FPM参数优化 一.网页防盗链 (1)防盗链端--服务端配置(192.168.75.134) 1.1 服务端配置DNS服务,域 ...

  7. Nginx网页优化及防盗链__gw

    Nginx网页优化及防盗链 Nginx服务优化 配置Nginx隐藏版本号 方法一 方法二 修改nginx用户和组 网页缓存时间 Nginx的日志分割 编写日志分割脚本 制作任务计划 链接超时 更改Ng ...

  8. Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

    Nginx使用http_accesskey_module防盗链,告别referer,告别伪装 传统的防盗链很多是依赖referer,比如apache的rewrite模块,根据规则判断referer,这 ...

  9. Nginx设置图片防盗链(白名单与黑名单)

    点击蓝字关注这个神奇的公众号- 某些时候可能您会发现,别人网站直接将您的网站图片拿过去使用,导致额外消耗服务器流量和带宽,如果本身服务器带宽和流量就比较小,被人盗链后势必会造成一定影响.这篇文章分享下 ...

最新文章

  1. 计组--习题--总线
  2. devexpress chart 柱形图
  3. Python全栈工程师(多继承、函数重写)
  4. python 字典的一些简单操作
  5. java三件套_Java开发人员应该知道的三件事
  6. android 连接ble键盘,如何在Android上以编程方式配对和连接HID蓝牙设备(蓝牙键盘)...
  7. C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.PDF.SDK
  8. 各区区号的字段和名称
  9. 激光雷达3D建模---读书笔记
  10. 使用 CSS 创建自定义鼠标光标
  11. 2011年6个微博营销趋势
  12. Servlet的Request和Response
  13. Unity中纹理启用SRGB的坑
  14. linux带source地址ping,实战经验:Linux Source NAT在Ping场景下的应用
  15. 区块链学习笔记五 BTC网络
  16. 【qstock数据篇】行业概念板块与资金流
  17. 电视hdr测试软件,HDR测试:各家效果差异太夸张_索尼 KD-65A1_液晶电视评测-中关村在线...
  18. 【大数据分析毕设之基于知识图谱的银行风控智能管理系统
  19. 2019李永乐考研数学 基础过关660题 数学一
  20. 中兴F460 EPON v3.0 光猫获取超级密码、开启路由功能

热门文章

  1. 如何写一篇好的科研论文
  2. MyCms 自媒体 CMS 系统 v2.6,SEO 优化升级
  3. 绿毛水怪入古格--想念阿里阿刁
  4. 大番茄插件 常用配置
  5. css教程 school,CSS 教程
  6. 网易云课堂(页面布局)
  7. pycharm成功但是cmd报错找不到moudle
  8. x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数
  9. 八,如何检测PC1,PC2直接通信?
  10. php简易验证码,PHP简易汉字验证码