nginx常用优化内容主要包括如下内容:
1.隐藏版本信息
2.隐藏nginx要修改的源代码
3.更改nginx服务的默认用户
4.降权启动nginx
5.优化nginx进程个数
6.绑定不同的nginx进程到不同的CPU上
7.Nginx事件处理模型优化
8.调整nginx单个进程允许的客户端最大连接数
9.配置nginx worker进程对打打开文件数
10.开启高效文件传输模式
11.Nginx gzip压缩实现性能优化
12.编写脚本实现日志轮询
13.不记录不需要的日志
14.访问日志的权限设置
15.根据扩展名限制程序和文件访问
16.禁止访问指定目录下的所有文件和目录
17.限制网站来源的IP访问
18.配置nginx禁止非法域名解析访问企业网站
19.nginx防爬虫优化
20.控制nginx并发连接数量
nginx的模块从结构上分为3种:
核心模块:HTTP模块,EVENT模块,MAIL模块。
基础模块:HTTPAccess模块,HTTP FastCGI模块,HTTP Proxy模块,HTTP Rewrite模块。
第三方模块:HTTP Upstream Hash模块,Notice模块,HTTP Access Key模块。
从功能上分为3种:
Handles(处理器模块):直接处理请求,并进行输出内容和修改headers信息,Handles处理器模块一般只能有一个。
Filters(过滤器模块):对其他处理器模块输出内容进行修改操作。最后由Nginx输出。
Proxies(代理类模块):与后端一些服务,比如FastCGI进行交互。实现服务代理和负载均衡等功能。
如果记不住,请飞往 nginx4种负载均衡算法速记及详解
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受影响
指定轮询权重,weight值越大,分配到的几率就越高,主要用于后端每台服务器性能不均衡的情况。
每个请求按访问IP的哈希结果分配,这样每个访客固定访问一个后端服务器,可以有效的解决动态网页存在的session共享问题。
更智能的一个负载均衡算法,此算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。如果想要使用此调度算法,需要Nginx的upstream_fair模块。
按访问URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端缓存服务器的效率。如果想要使用此调度算法,需要Nginx的hash软件包。
#!/bin/sh
set -x
logs_path="/usr/local/nginx/logs"
oldlogs_path="/nginx_oldlogs/"
for i in `ls $logs_path/* |grep -v nginx.pid |grep -v oldlogs`
do
mv "$i" "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d")
mv "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d") $oldlogs_path
done
#向nginx主进程发信号重新打开日志
nginx_pid= `ps -ef |grep nginx|grep master|awk '{print $1}'`
kill -USR1 $nginx_pid
/usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload
sleep 2
#docker exec -it tengine /usr/local/nginx/sbin/nginx -s reopen
#sleep 1
#clear the expired logs
cd $oldlogs_path
#find ./ -mtime +90 -exec rm -rf {} \;
echo "The old logfiles is deleted!!"
目的:对日志进行管理,结合cron每天进行切割,
1.定义日志的位置,及存储的位置。
2.对日志进行重新命名 移动到指定的位置
3.向nginx主进程发信号重新打开日志
4.对旧的日志进行删除处理
首先打开nginx.conf文件,在fastcgi_temp_file_write_size 128k; 下面添加
fastcgi_intercept_errors on;注意,包括;号
然后在需要定义的站点的里面添加
error_page 403 = /403.htm;
例如:
复制代码 代码如下:
server
{
listen 80;
server_name www.deepvps.com;
index index.html index.htm index.php;
error_page 403 = /403.htm;
include location.conf;
root /home/www/logs;
}
记得403页面放在站点的跟目录下…
测试配置
/usr/local/nginx/sbin/nginx -t
没错误就重启nginx
/etc/init.d/nginx restart
BTW,其他页面也是这样定义
error_page 502 = /502.htm;
重启之前,需要确认Nginx配置文件的语法是否正确,否则,Nginx不会加载新的配置文件。
通过以下命令检查配置文件是否正确
/user/local/webserver/nginx/sbin/nginx –t –c
/user/local/webserver/nginx/conf/nginx.conf
此时,就可以平滑重启Nginx了,如下 :
kill –HUP Nginx 主进程号 Kill – HUP‘/user/local/webserver/nginx/logs/nginx.pid’
nginx -t命令
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
1. nginx 相对 apache 的优点:
2.apache 相对nginx 的优点:
LVS特点:
1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生;
2.稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3.应用范围比较广,可以对所有应用做负载均衡;
4.不支持正则处理,不能做动静分离。
常用四种算法:
1.rr:轮叫,轮流分配到后端服务器;
2.wrr:权重轮叫,根据后端服务器负载情况来分配;
3.lc:最小连接,分配已建立连接最少的服务器上;
4.wlc:权重最小连接,根据后端服务器处理能力来分配。
Nginx特点:
1.工作在7层,可以对做正则规则处理;(如:针对域名、目录进行分流)
2.配置简单,能ping通就能进行负载功能,可以通过端口检测后端服务器状态,不支持url检测;
3.抗高并发,采用epoll网络模型处理客户请求;
4.只支持HTTP和EMail,应用范围比较少;
5.nginx主要是HTTP和反向代理服务器,低系统资源消耗。
常用四种算法:
1.RR:(默认)轮询,轮流分配到后端服务器;
2.weight:根据后端服务器性能分配;
3.ip_hash:每个请求按访问ip的hash结果进行分配,并发小时合适,解决session问题;
4.fair:(扩展策略),默认不被编译nginx内核,根据后端服务器响应时间判断负载情况,选择最轻的进行处理。