您的位置:首页 > 运维架构 > Nginx

nginx优化

2017-04-21 13:36 417 查看
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;



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  服务器 代理 俄罗斯