文章目录

  • 前言:
  • 一、Nginx版本隐藏优化
    • 1.1 Nginx隐藏版本号
    • 1.2 Nginx隐藏版本号
  • 二、Nginx用户与组优化
    • 2.1 修改主配置文件指定用户和组
  • 三、配置Nginx网页缓存优化
    • 3.1 Nginx网页缓存
    • 3.2 Nginx网页缓存配置(实验)
  • 四、Nginx 日志分隔优化
    • 4.1 Nginx 日志分隔
    • 4.2 Nginx日志分隔配置
  • 五、Nginx网页连接超时优化
    • 5.1 Nginx网页连接超时
    • 5.2 Nginx网页连接超时优化
  • 总结:

前言:

与之前博客中Apache网站服务器一样,在不同的生产环境中,我们需要作出不同的优化方案,在考虑稳定性、负载能力之上更重要的是安全性。

本篇博客主要从:Nginx的版本号、缓存时间、日志分隔、网页压缩和防盗链这几个方面的优化进行介绍

一、Nginx版本隐藏优化

1.1 Nginx隐藏版本号
  • 在生产环境中,隐藏Nginx的版本号,是避免安全漏洞的一个最简单最必要的基础优化

  • 查看版本方法

    ① 可以直接在windows客户端使用fiddler抓包工具捕捉访问的站点信息,其中包含Nginx版本号

    ② 在Centos系统中使用 curl -l 网址 命令查看Nginx版本号

  • Nginx隐藏版本号的方法

    ① 修改配置文件

    ② 修改源码

1.2 Nginx隐藏版本号

方式一:Nginx的配置文件中的server_tokens的选项设为off(关闭显示版本)

[root@www ~]# vim /usr/local/nginx/conf/nginx.conf
http {include       mime.types;default_type  application/octet-stream;server_tokens off;    ##不显示版本
}
  • 重启服务后,可以使用curl -l 命令查看版本信息

示例

[root@www conf]# service nginx restart
[root@www conf]# curl -I http://192.168.181.129/  #查看版本号
HTTP/1.1 200 OK
Server: nginx           #此处已不显示版本
Date: Wed, 05 Feb 2020 12:25:02 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 05 Feb 2020 12:19:05 GMT
Connection: keep-alive
ETag: "5e3ab2b9-264"
Accept-Ranges: bytes
  • 若PHP配置文件中配置了 fastcgi_param SERVER SOFTWARE选项

    则编辑 php-fpm配置文件,将fastcgi_param SERVER SOFTWARE对应的值修改为 fast_param SERVER_SOFTWARE nginx

方式二:修改Nginx源码

  • Nginx源码文件/usr/src/ nginx-1.12.2/src/ core/nginx. h包含了版本信息,可进行修改

  • 重新编译安装,隐藏版本信息

示例
define NGINX_VERSION “1.1.1″,修改版本号为1.1.1

define NGINX_VER “IIS/",修改软件类型为lls

[root@www ~]# vim /opt/nginx-1.12.2/src/core/nginx.h    #进入nginx内核文件中
#define nginx_version      1012002
#define NGINX_VERSION      "1.12.2"   ##1.12.2是版本号,可直接修改版本号为1.1.1显示(版本欺骗)
#define NGINX_VER          "nginx/" NGINX_VERSION#重新编译:
[root@localhost nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
#重启服务:
[root@localhost nginx-1.12.2]# service nginx restart
[root@localhost nginx-1.12.2]# curl -I http://192.168.181.129/  #查看版本号、
HTTP/1.1 200 OK
Server: nginx/1.1.1     #版本已被伪造成1.1.1
Date: Wed, 05 Feb 2020 12:30:33 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 05 Feb 2020 12:19:05 GMT
Connection: keep-alive
ETag: "5e3ab2b9-264"
Accept-Ranges: bytes

二、Nginx用户与组优化

  • Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制

  • Nginx默认使用nobody用户账号与组账号,一般也要进行修改

  • 修改的方法

    ① 编译安装时指定用户与组

    ② 修改配置文件指定用户与组

2.1 修改主配置文件指定用户和组
vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx;          #第二行,去掉注释,将nobody修改为nginx nginx(用户、组)
worker_processes  1;
  • 查看进程
[root@localhost nginx-1.12.2]# ps aux | grep nginx
root      20143  0.0  0.0  20544   604 ?        Ss   20:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     20145  0.0  0.0  23072  1640 ?        S    20:30   0:00 nginx: worker process
root      20217  0.0  0.0 112728   972 pts/0    R+   20:34   0:00 grep --color=auto nginx
[root@localhost nginx-1.12.2]# 

主进程由root创建,子进程由nginx创建

三、配置Nginx网页缓存优化

3.1 Nginx网页缓存
  • 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度

  • 一般针对静态网页设置,对动态网页不设置缓存时间

  • 可在Windows客户端中使用fiddler查看网页缓存时间

  • 设置方法

    可修改配置文件,在http段、 或者server段、 或者location段加入对特定内容的过期参数

3.2 Nginx网页缓存配置(实验)

① 先拷贝一张图片到nginx站点目录中

[root@localhost nginx-1.12.2]# cd /mnt
[root@localhost mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz  Discuz_X2.5_SC_UTF8.zip  mha
apr-1.6.2.tar.gz                  dog.jpg                  mha.rar
apr-util-1.6.0.tar.gz             error.png                mysql-5.6.26.tar.gz
awstats-7.6.tar.gz                httpd-2.4.29.tar.bz2     php-5.6.11.tar.bz2
cat.jpg                           LNMP-C7
cronolog-1.6.2-14.el7.x86_64.rpm  LNMP-C7.rar
[root@localhost mnt]# cp cat.jpg /usr/local/nginx/html/
  • ② 将图片加入到网页中
[root@localhost mnt]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html  cat.jpg  index.html
[root@localhost html]# vim index.html
<h1>Welcome to nginx!</h1>
<img src="cat.jpg"/>       #在此处添加图片信息
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
  • ③ 访问站点验证
[root@localhost html]# service nginx start

  • ④ 修改主配置文件
@localhost html]# vim /etc/nginx.conf
#讲一下内容加载http{}段内
location ~ \.(gif|jepg|jpg|ico|bmp|png)$ {root html;expires 1d;}
---------->wq
  • ⑤ 使用抓包工具进行验证

四、Nginx 日志分隔优化

4.1 Nginx 日志分隔
  • 随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件

  • 太大的日志文件对监控是一个大灾难

    定期进行日志文件的切割

  • Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,并通过Linux的计划任务周期性地进行日志切割

  • 编写脚本进行日志切割的思路:

    设置时间变量

    设置保存日志路径;

    将目前的日志文件进行重命名

    删除时间过长的日志文件

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

4.2 Nginx日志分隔配置
  • ① 编写脚本实验自动分隔
[root@localhost html]# vim /opt/fenge.sh
#!/bin/bash
#filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")       #-1 day代表昨天的日志 “+” 连接符
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"   #pid文件放的是进程号
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf  #xargs 可以将 "|"之前的结果作为参数给 “|”后的命令执行
-----》wq
[root@localhost opt]# chmod +x fenge.sh
  • ② 执行脚本,查看日志文件目录
[root@localhost opt]# ./fenge.sh
[root@localhost opt]# cd /var/log/nginx/
[root@localhost nginx]# ls
test.com-access.log-20200204    #指的是前一天的日志

可以使用命令将时间设置提前一天,再次执行脚本查看

[root@localhost nginx]# date -s 2020-2-6
2020年 02月 06日 星期四 00:00:00 CST
[root@localhost nginx]# cd -
/opt
[root@localhost opt]# ./fenge.sh
[root@localhost opt]# cd -
/var/log/nginx
[root@localhost nginx]# ls
test.com-access.log-20200204  test.com-access.log-20200205
  • ③ 设置周期性计划任务,定期自动执行日志文革
[root@localhost nginx]# crontab -e
0 1 * * * /opt/fenge.sh 

五、Nginx网页连接超时优化

5.1 Nginx网页连接超时
  • 在企业网站中,为了避免同- -个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间

  • 使用Fiddler工具查看connection参数

  • 超时参数讲解

    Keepalive_timeout

    设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或者关闭,可在http段、server段、 或者location段设置

    Client_header_timeout:指定等待客户端发送请求头的超时时间

    Client_body_timeout:设置请求体读超时时间

5.2 Nginx网页连接超时优化
  • ① 修改主配置文件
[root@localhost nginx]# vim /etc/nginx.conf keepalive_timeout  65 188;      #以最后的数为准,可以在http/server/location中设置client_header_timeout 80;     #等待客户端发送请求头的超时时间,超时后会发送408错误码client_body_timeout 80;         #设置客户端发送请求体超时时间
----->wq
[root@localhost nginx]# service nginx stop
[root@localhost nginx]# service nginx start
  • ② 使用抓包工具验证

中间虚拟机机重启了一次,导致了IP变化(此处可以忽略)

总结:

本篇博客介绍了Nginx网页的一般优化,之后会介绍Nginx的深入优化(压缩、防盗链)

Nginx网页优化(版本、缓存时间、日志分隔、连接超时)相关推荐

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

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

  2. Nginx高级优化(2): shell脚本日志切割,连接超时,进程数,网页压缩,防盗链,FPM 参数优化!!

    呕心沥血书写,看完后对Nginx了如执掌,不看真的后悔!! shell脚本日志分割 设置连接超时 Nginx深入优化 更改进程数 配置网页压缩 配置防盗链 20.0.0.25 主机:开始盗链 20.0 ...

  3. java ftp 连接超时时间_ftpClient的连接超时设置(setConnectTimeout,setSoTimeout) | 学步园...

    从 ftpClient的官方网的FAQ里面看到,实现这个需要用一个 自定义的SocketFactory 然后实现里面的 createSocket方法,有好多个. http://wiki.apache. ...

  4. 配置nginx网页缓存时间

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

  5. Nginx网页与安全优化

    文章目录 前言 一.隐藏版本号 方法一:修改配置文件方式 方法二:修改源码文件,重新编译安装 二.修改用户和组 三.缓存时间 四.日志分割 五.连接超时 六.更改进程数 七.配置网页压缩 八.配置防盗 ...

  6. Web服务器群集——Nginx企业级优化

    Nginx企业级优化 Nginx企业级优化 隐藏版本号 修改用户和组 配置网页缓存时间 日志切割 设置连接超时 更改进程数 配置网页压缩 配置防盗链 FPM参数优化 Nginx企业级优化 nginx. ...

  7. 修改网站设置里的php版本号,Nginx服务优化(隐藏版本号、修改用户和组、设置链接超时)...

    Nginx服务优化可以从隐藏版本号.更改用户与组.配置网页缓存时间.日志切割.设置连接超时这几个方面进行优化.下面来详细的看看 1.隐藏版本号 在生产环境中需要隐藏Nginx的版本号,以避免泄露Ngi ...

  8. Web服务器Nginx企业级优化

    部署Nginx软件 1)安装支持软件: Nginx的配置及运行需要pcre.zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成 ...

  9. 运维之道 | Nginx 配置文件优化解析

    Nginx配置文件nginx.conf 1.配置文件位置/usr/local/nginx/conf/nginx.conf 2.nginx 的组成部分 配置文件中有很多#,开头的表示注释内容,我们去掉所 ...

  10. 谷歌浏览器连接超时_系统超时重试机制(OpenResty/Nginx)

    在实际开发当中,很多故障的产生都是因为没有意识到超时设置的重要性而造成的.如果不设置超时机制,就有可能导致连锁反应,最终系统雪崩.有些中间件天然集成了超时重试的机制,但是在设计当中需要注意的是:读服务 ...

最新文章

  1. 谷歌程序员犯低级错误?少打一个字符引发重大 Bug,致大量 Chromebook 无法解锁...
  2. 开学几天了,还没有进入状态,继续努力
  3. 前端开发中的一些js小技巧
  4. qt服务器获取formdata文件,QT上传(PUT)文件
  5. Arcgis创建SDE_Geometry、SDO_Geometry的区别【转】
  6. css实现圆球旋像水波波动_手机拍屏幕烦人的“水波纹”小米10靠它给解决掉了...
  7. python中math.log注意点
  8. python颜色表_Python:数据可视化,必须注意的30个小技巧
  9. [20180819]四校联考
  10. 超级经典的与其他语言混合编程的批处理代码
  11. 通信原理最佳接收-匹配滤波器
  12. 微信小程序样式-id选择器的使用教程
  13. 电脑网络——QQ、微信可以登录,浏览器打不开的解决方法
  14. Filebeat Filter - Dissect/DNS Reverse
  15. lightGBM使用
  16. android 转码工具下载,m3u8视频转码工具
  17. 5种常见的服务器种类是哪些
  18. 中国压电材料取得突破性进展,未来B超机可折叠弯曲
  19. [翻译练习] Node interview of ElemeFE OS
  20. 例行性工作排程 (crontab)

热门文章

  1. C3P0jar包下载方法
  2. VUE使用benz-amr-recorder 实现解码、播放
  3. pythonaot_热修复设计之AOT/JITdexopt 与 dex2oat (一)
  4. Cisco路由器的配置
  5. mysql 织梦 优化,织梦Dedecms全站SEO优化教程
  6. 实验三 高速公路收费站双收费口仿真
  7. 多线程服务器的常用编程模型
  8. opencv normalize()函数详解
  9. Tomcat NIO、APR 对比
  10. CentOS7.X安装部署Glassfish4.1.2