首页 > 代码库 > nginx优化
nginx优化
nginx是俄罗斯编写的轻量级的http服务器。高性能的http和反向代理服务器,同时也是一个imap/pop3/smtp搭理服务器,nginx是由俄罗斯lgor sysoev为俄罗斯访问量第二的ramble.ru站点开发。
nginx是轻量,开源,易用
nginx以事件驱动的方式编写,有非常好的性能,同时也是一个非常高效的反向代理,负载均衡。不支持cgi方式运行,可以减少因此带来的一些程序上的漏洞,必须使用fastcgi方式来执行php程序。
编译安装前优化:
编译前的优化主要用来修改程序名等等,目的更改源码隐藏软件名称和版本号。
安装zlib-devel,pcre-devel依赖包
yun-y install gcc gcc-c++ make libtool zlib zlib-devel pcre-devel opensslopenssl-devel
解压源码包
tar zxf nginx-1.10.2.tar.gz
cdnginx-1.20.2/
修改软件名称和版本号
vim src/core/nginx.h
#defineNGINX_VERSION 版本号
#defineNGINX_VER 软件名称
修改http头信息中的connection字段,防止回显具体版本号
通过http头,通用头包含请求和响应消息都支持的头,通用头包含Cache-Control,Connectioin,Date,Pragma,Transfer-Encoding,Upgrade,Via。对通用头的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理,那么也就是说有部分设备,或者软件,能获取connection,部分不能。
修改http错误码的返回
我们程序页面出现错误,nginx会代我们返回相应的错误代码,回显时,会带上nginx和版本号。
vim /usr/src/nginx-1.10.2/src/http/ngx_http_special_response.c
二,安装nginx
编译安装nginx
如果pcre是通过编译安装的话,则--with-pcre=/usr/local/src/pcre-8.26
创建软连接
启动nginx和查看端口号
测试编译安装前的优化
可以了解master是管理员,work进程才是为用户提供服务
三,nginx的优化
1.nginx运行工作进程个数,设置cpu的核心或者核心数的二倍
vim /usr/local/nginx1.10/conf/nginx.conf
worker_processes 4
/usr/local/nginx1.10/sbin/nginx -s reload
nginx运行cpu亲和力
woker_cpu_affinity 01 10
woker_processer最多开启8个,8个以上不再提升性能了,而且稳定性变得更低。
nginx最多打开文件数
woker_rlimit_nofile 65535
当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数与nginx进程数相除。最好与ulimit -n的值保持一致。
文件资源限制配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户设置
2.nginx事件处理模型
events {
use epoll;
worker_connection 65536;
multi_accept on;
nginx采用epoll事件模型,处理效率高
work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存限定,时间最大值就是worker进程数乘以work_connectioins
multi_accept告诉nginx收到一个新连接通知后接受尽可能多的连接
3,开启高兴传输模式
http {
include mime,types;
default_type application/octest-stream;
...
sendfile on;
tcp_nopush on;
...
include mime.types:媒体类型,incude只是在当前文件中包含另一个文件内容的指令
default_type application/octer-stream:默认媒体类型足够
tcp_nopush on:必须在sendfile开启模式才有效,防止网络阻塞,积极减少网络报文段的数量
5,连接超时时间
保护服务器资源,cpu,内存,控制连接数,建立连接也是需要消耗资源的
keepalived_timeout 60;
tcp_nodelay on;
client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
client_body_timeout 15;
reset_timedout_connection on;
send_timeout 15;
server_tokens off;
client_max_body_size 10m;
本文出自 “11853028” 博客,请务必保留此出处http://tanhong.blog.51cto.com/11853028/1918131
nginx优化