Nginx深度优化
简介
1.隐藏版本号
2.修改Nginx用户与组
3.配置Nginx网页缓存时间
4.实现Nginx的日志切割
5.配置Nginx实现连接超时
6.更改进程数
7.配置Nginx实现网页压缩功能
8.配置Nginx实现防盗链
9.FPM模块进行参数优化
实验环境
- 系统环境:CentOS7.4
- 服务器IP地址:192.168.100.71
- 客户端IP地址:192.168.100.72
- yum挂载目录:/mnt/sr0
- 相关源码包下载地址:百度云下载 密码:uhzm
搭建步骤
一、配置Nginx隐藏版本号
在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄漏,使×××者不能针对特定版本进行×××
方法一:修改配置文件法
1、修改主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
2、重启Nginx服务
[root@Init5 ~]# nginx -t
[root@Init5 ~]# service nginx restart #重启服务
3、测试
[root@Init5 ~]# curl -I http://192.168.100.103
方法2:修改源码法
1、安装相关工具包
[root@Init5 ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel
2、创建Nginx进程用户
[root@Init5 ~]# useradd -M -s /sbin/nologin nginx
3、解压Nginx
[root@Init5 ~]# tar xvf nginx-1.6.0.tar.gz -C /usr/src/
4、修改源码文件
[root@Init5 ~]# cd /usr/src/nginx-1.6.0/src/core/
[root@Init5 core]# vim nginx.h
5、配置、编译及编译安装
[root@Init5 core]# cd /usr/src/nginx-1.6.0/
[root@Init5 nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module
参数解析:
prefix #指定安装位置
user=nginx #指定nginx系统用户
group=nginx #指定组
with-http_stub_status_module #指定统计模块
[root@Init5 nginx-1.6.0]# make && make install#编译及编译安装
6、优化路径
[root@Init5 nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
7、编辑Nginx服务脚本
[root@Init5 ~]# vim /etc/init.d/nginx
添加以下脚本:
#!/bin/bash
# chkconfig: 35 99 20
# description:Nginx Server Control Script
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1 #非正常退出
esac
exit 0 #正常退出
[root@Init5 ~]# chmod +x /etc/init.d/nginx #赋予权限
[root@Init5 ~]# chkconfig --add nginx #添加系统服务
[root@Init5 ~]# service nginx start
8、测试
[root@Init5 ~]# curl -I http://192.168.100.103
二、修改Nginx用户与组
Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制,Nginx默认使用nobody用户账号与组账号,一般也要进行修改
方法1:编译安装时指定
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx …… 略
方法2:修改配置文件
1、修改主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
2、重启Nginx服务
[root@Init5 ~]# service nginx restart
3、测试
[root@Init5 ~]# ps aux | grep nginx
三、配置网页缓存时间
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,以避免重复请求,加快了访问速度,一般针对静态网页进行设置,对动态网页不用设置缓存时间
1、编辑默认首页
[root@Init5 ~]# cp qingzi.jpg /usr/local/nginx/html/ #将测试图片拷贝到站点目录下
[root@Init5 ~]# cd /usr/local/nginx/html/
[root@Init5 html]# vim index.html #编辑默认首页
2、编辑主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
3、重启服务
[root@Init5 ~]# service nginx restart
4、测试
四、实现Nginx的日志切割
随着Nginx运行时间的增加,产生的日志也会增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件,而太大的日志文件对监控是一个大灾难。Nginx没有类似Apache的crolog日志分割处理的功能,但是,可以通过Nginx的信号控制功能的脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行,便可实现日志分割功能
1、编辑日志分割脚本
[root@Init5 ~]# vim /opt/fenge.sh
添加以下脚本信息:
#!/bin/bash
# Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d") #获取当前时间的前一天,也就是往前推一天
logs_path="/var/log/nginx" #指定保存Ngixn日志路径
pid_path="/usr/local/nginx/logs/nginx.pid" #Nginx进程ID路径
[ -d $logs_path ] || mkdir -p $logs_path #判断定义的路径是否存在,不存在创建目录
mv /usr/local/nginx/logs/access.log $logs_path/bt.com-access.log-$d #将Nginx剪切至定义的目录下,并且用日期定义名称
kill -USR1 $(cat $pid_path) #平滑重载Nginx服务
find $logs_path -mtime +30 | xargs rm -rf #文件最后修改的时间超过30天,直接删除
[root@Init5 ~]# chmod +x /opt/fenge.sh #添加执行权限
2、测试脚本
[root@Init5 ~]# date #查看当前时间
[root@Init5 ~]# sh /opt/fenge.sh #执行脚本
[root@Init5 ~]# ls /var/log/nginx/
[root@Init5 ~]# date -s 07/17/18 #将时间往后推1天(7月17号)
[root@Init5 ~]# ll /var/log/nginx/
3、引入周期性计划任务
[root@Init5 ~]# crontab -e
30 1 * /opt/fenge.sh #每天凌晨01:30定期执行脚本自动进行
五、配置Nginx实现连接超时
在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
1、修改主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
2、重新启动Nginx服务
[root@Init5 ~]# service nginx restart
3、测试
六、更改进程数
在高并发场景,需要启动更多的nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
1、查看Nginx运行的个数
[root@Init5 ~]# ps aux | grep 'nginx'
2、查看物理CPU核数
[root@Init5 ~]# cat /proc/cpuinfo | grep -c "physical"
3、修改主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
4、重启服务
[root@Init5 ~]# service nginx restart
5、再次查看Nginx运行的个数
七、配置Nginx实现网页压缩功能
Nginx的ngx_http_gzip_module压缩模块(默认已经添加,不需要--with)提供了对文件内容压缩的功能,允许nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装,可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
1、修改主配置文件
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
添加以下参数:
gzip on:开启gzip #压缩输出
zip_min_length 1k #用于设置允许压缩的页面最小字节数,低于1k不压缩
gzip_buffers 4 16k #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzp压缩结果
gzip_http_version 1.0 #用于设置识别http协议版本,默认是1.1
gzip_comp_level 2 #用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可
gzip_types text/plain #压缩类型,是就对哪些网页文档启用压缩功能,类型与类型之间用空格隔开,可以指定多个
gzip_vary on #选项可以让前端的缓存服务器缓存经过gzip压缩的页面
八、配置Nginx实现防盗链
在企业网站服务中,一般都要配置防盗链功能以避免网站内容被非法盗用,造成经济损失。Nginx防盜链功能也非常强大。在默认情况下,只需要进行简单的配置,即可实现防盗链处理
实验环境
IP地址 | 域名 | 用途 |
---|---|---|
192.168.100.103 | www.bt.com | 源主机 |
192.168.100.20 | www.test.com | 盗链网站 |
1、源主机测试页面
2、盗链网站盗用源主机图片
[root@raid ~]# vim /usr/local/nginx/html/index.html #编辑默认首页
3、访问测盗链网站测试页面
4、源主机配置防盗链
[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf #编辑主配置文件
[root@Init5 ~]# nginx -t #检测语法
[root@Init5 ~]# service nginx restart #重启Nginx服务
5、测试
九、FPM模块进行参数优化
Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整
[root@Init5 etc]# vim php-fpm.conf
pid = run/php-fpm.pid #确定pid文件位置
pm = dynamic #动态方式
pm.max_children=50 #最大启动进程数量是50个,相当于水桶,代表桶的容积
pm.start_servers = 20 #启动时开启的进程数进程是20个
pm.min_spare_servers = 5 #最小空闲进程数是5个,低于这个数,每秒钟会产生一个新的进程
pm.max_spare_servers = 20 #最大空闲进程数是20个,客户不连接PHP,最多允许的空间进程数
Nginx深度优化的更多相关文章
- 深度优化LNMP之Nginx [2]
深度优化LNMP之Nginx [2] 配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍 Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求 ...
- 深度优化LNMP之Nginx (转)
深度优化LNMP之Nginx Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息 一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例 ...
- 深度优化LNMP之PHP (转)
深度优化LNMP之PHP PHP缓存加速介绍 1.操作码介绍及缓存原理 当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate ...
- [sql]大型网站MySQL深度优化揭秘
大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路 2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...
- ASP.NET WebApi 文档Swagger深度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws 写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...
- nginx + SSL优化配置
nginx + SSL优化配置: #http段添加如下配置项: http { ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户 ...
- MySQL内核深度优化
版权声明:本文由简怀兵原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/179 来源:腾云阁 https://www.qclo ...
- nginx 配置优化的几个参数
nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究 ...
- 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化
作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...
随机推荐
- 03-spark kafka
1.概念 Kafka是一个开源的消息系统.由Scala编写,它具备以下特点: ①消息持久化: 为了从大数据中获取有价值的信息,任何信息的丢失都是负担不起的.使用Kafka时,message会被存储并且 ...
- jquery 弹框,确定、取消
function del(id, url) { var bool = confirm("确定删除?") if (bool) { //点击确定后操作 var Urls = " ...
- 剑指Offer(四):重建二叉树
说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...
- centos7安装LNMP与Laravel遇到的一些小问题
安装LNMP 第一次安装 yum update CentOS7下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装 安装mySQL时,mysqld: error ...
- Robot Operating System (ROS)学习笔记3---键盘控制
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/253 一.创建控制包 catkin_creat ...
- Heap Allocation Profiles (heap=sites)
基于JDK-6,使用的类不同,展示的信息可能不同,内容一样的javac -J-agentlib:hprof=heap=sites Hello.java percent live alloc’ed st ...
- 【Social listening实操】从社交媒体传播和文本挖掘角度解读《欢乐颂2》
本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 作为数据分析爱好者,本文作者将想从数据的角度去解读< ...
- centos7系统分区方案
个人认为:硬盘如果够大,可以单独划分一个data盘,以防止rm -rf / Centos 7.2基础安装和配置(含分区方案建议) 参考网站: https://www.cnblogs.com/set- ...
- nodejs操作monggodb数据库封装
var MongoClient=require('mongodb').MongoClient; var DbUrl='mongodb://localhost:27017/productmanage'; ...
- 14.linux下复制粘贴
1. 在终端下: 复制命令:Ctrl + Shift + C 组合键. 粘贴命令:Ctrl + Shift + V 组合键. 2. 在控制台下: 复制命令:Ctrl + Insert 组合键 或 ...