lamp或者lnmp架构优化之web,先说nginx的优化。
1.隐藏nginx header内版本号信息。
方法:在http标签内 加入 server_tokens off;
2.更改nginx默认用户和用户组。nginx服务启动默认用户为nobody,为了防止别人知道,我们可以改为别的用户名。
方法:我们可以在编译时候指定用户名和用户组,之后把这个用户shell设置为nologin。如果编译时候没有设定,可以打开配置文件 设置user username groupname。
3.配置nginx worker进程个数。建议设置和cpu核数相等或者2倍的进程数。
方法:worker_processes 数量
4.根据cpu核数进行优化。默认多个进程可能更多跑在一颗cpu上,这个优化可以使不同进程分配给不同cpu。
方法:添加worker_cpu_affinity参数
eg.四核cpu:worker_cpu_affinity 0001 0010 0100 1000
5.事件处理模型优化。在linux操作系统下,多用epoll模型;win下多用icop等。
方法:在events标签下 添加 use epoll
6.调整单个进程允许客户端最大连接数
方法:在events标签下添加 worker_connections 512字段。连接数根据自己更改。
7.配置单个进程最大打开文件数
方法:添加worker_rlimit_nofile 65535字段。
8.优化服务器名字hash表大小
方法:在配置虚拟主机时,尽量写详细域名,把常用域名写在前面,尽量不写通配符。
9.开启高效传输模式
方法:添加sendfile on字段
10.设置超时连接时间
方法:添加以下字段
keepalive_timeout 60 设置客户端保持会话时间
tcp_nodelay on 这个字段在keepalive设置后才生效
client_header_timeout 15设置客户端请求头读取超时时间,如果超时,客户端没发送任何数据,nginx返回408
client_body_timeout 15客户端请求主体读取超时时间,效果同上。
send_timeout 15 指定响应客户端超时时间,如果超时客户端无活动会自动关闭nginx连接。
11.上传文件大小限制
方法:添加字段 client_max_body_size 10m
12.fastcgi调优
方法:
fastcgi_connecttion_timeout 300 指定连接后端fastcgi超时时间
fastcgi_send_timeout 300 向fastcgi发送请求超时时间(已完成两次握手,等待最后确认)
fastcgi_read_timeout 300 接收fastcgi应答超时时间(已完成两次握手,等待应答)
fastcgi_buffer_size 64k 读取内容缓存区大小
fastcgi_buffers 4 64k 用多少多大缓冲区应答请求
fastcgi_busy_buffer_size 128k fastcgi繁忙时buffer大小
fastcgi_temp_file_write_size 128k fastcgi临时文件用多大数据块,建议fastcgi_buffers两倍
fastcgi_cache name 开启fastcgi缓存并且指定一个名称
fastcgi_cache_valid 这个字段可以设置缓存时间
13.隐藏nginx软件名称。需要改源码,上网百度之。
14.nginx压缩功能,对压缩比比较高的内容压缩。例如对代码(js,css,html)压缩,(图片,视频,flash)不压缩
首先设置gzip on字段
之后设置压缩长度 gzip_min_length 1k小于1k文件不压缩
gzip_buffers 4 16k压缩缓冲区大小
gzip_comp_level 2压缩等级设置
gzip_types text/plain application/x-javascript text/css 设置压缩类型
gzip_vary on让缓存服务器缓存压缩过的页面
15.expires缓存功能。浏览器缓存时间,设置好可以减轻服务器压力。需要缓存的缓存,不需要缓存的不缓存。
一般和location配合使用,用location指定缓存内容,加入expires 365d指定时间。
16.防爬虫,请百度
17.nginx日志轮训,默认不轮训,无限往一个文件里面写。
方法:给日志改名,重新加载nginx,重新生成日志。
18.不记录不需要的访问日志。例如,健康检查,js,css,图片不需要记录。
方法:配合location使用 access_log off
19.最小化目录及文件权限设置。
方法:所有站点目录用户和组都应该改为root,目录权限755,文件权限644
20.根据扩展名限制程序和文件访问
方法:使用location指定内容,禁止可执行文件执行 deny all
21.限制来源ip访问
方法:使用location指定内容,禁止部分ip访问 deny
22.返回http状态码
方法:error_page 404 /404.html
apache的优化点和nginx一致。首先apache的工作模式有两种,一种是prefork模式(默认),一种是worker模式。prefork模式父进程可以创建多个子进程(进程池),每个进程只能维持一个连接。优点是高效稳定安全,但是比worker模式消耗资源多,并发量没有worker多,这部分的配置在<IfModule mpm_prefork_module>标签内。worker模式是进程和线程结合的模式,主进程下面有多个子进程,子进程下面又有多个线程,每个线程维持一个连接。优点是高并发,缺点是一个线程挂了,有可能导致进程死掉,这部分的配置在<IfModule mpm_worker_module>标签内。