nginx性能优化

1、user 指定NginxWorker进程运行用户以及用户组,默认由nobody账号运行(为了安全起见,尽量不要使用root用户)
2、worker_processes 指定Nginx要开启的进程数。每个进程平均耗费10MB~12MB内存。建议指定和CPU的数量一样多的进程数即可,可通过lscpu命令查询cpu数量。
3、error_log 用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit,debug输出日志最详细,crit最少。日志输出要结合实际情况,可以单独对一个server进行设置,输出日志也会占用服务器资源。
4、pid 指定进程id的存储文件位置。
5、work_rlimit_nofile 用于绑定worker进程和cpu。(文件描述符,一般调整至1w以上,负荷高则2-3w以上,结合自身需求)
6、events 用来设定Nginx的工作模式及连接数上限
7、use 是个事件模块指令,用来指定Nginx的工作模式。支持的工作模式有:select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll中高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选,因为epoll采用异步非阻塞调用机制,有效提高了服务器性能。
8、worker_connections 也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。这个属性是指单个工作进程可以允许同时建立外部连接的数量,最大为65535,但是在修改nginx配置前需要先调整文件描述符,可以通过ulimit命令,也可以修改配置文件/etc/security/limits.conf添加* soft nofile 65535 * hard nofile 65535命令。
9、include 是个主模块指令,实现对配置文件包含文件的设定,可以减少主配置文件的复杂度。类似于Apache的include
10、default_type 属于http核心模块指令,这里设定默认类型是二进程流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
11、log_format 是httplog模块指令,用于指定nginx日志的输出格式,main是此日志输出格式的名称。
12、client_max_body_size 设置允许客户端请求的最大单个文件字节数
13、client_header_buffer_size 指定来自客户端请求头的headerbuffer大小
14、large_client_header_buffers 指定客户端请求中较大的消息头的缓存最大数量和大小,4为个数,32k为大小,最大缓存为4个128KB。
15、sendfile 开启高效文件传输模式。将tcp_nopush和tcp_nodely两个指令设置为on,用于防止网络阻塞。
16、keepalive_timeout 设置客户端连接保持活动的超时时间
17、client_header_timeout 设置客户端请求头读取超时时间
18、client_body_timeout 设置客户端请求主体读取超时时间
19、send_timeout 指定响应客户端的超时时间。
20、gzip on 开启gzip压缩,实时压缩输出数据流。
21、gzip_min_length 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1k的字节数,小于1K可能会越压越大。
22、gzip_buffers 表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
23、gzip_http_version 设置识别HTTP协议版本,默认是1.1
24、gzip_comp_level 指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。
25、gzip_types 指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。
26、gzip_vary 可以让前端的缓存服务器缓存经过gzip压缩的页面
27、gzip_disable “MSIE [1-6].”; 针对ie低版本浏览器取消压缩,避免那部分访问出现问题。
27、proxy_redirect 指定修改被代理服务器返回的响应头中的“Location"和"Refresh
28、proxy_set_header 设置由后端的服务器获取用户的主机名或真实IP地址,以及代理者的真实IP地址
29、client_body_buffer_size 用于指定客户端请求主体缓冲区大小,可以理解为先保存到本地再传给用户。
30、proxy_connect_timeout 表示与后端服务器连接的超时时间,即发起握手等候响应的超时时间
31、proxy_send_timeout 表示后端服务器的数据回传时间,即在规定时间之内传完所有的数据,否则,Nginx将断开这个连接。
32、proxy_read_timeout 设置Nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间,其实是Nginx已经进入后端的排除之中等候处理的时间。
33、proxy_buffer_size 设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小
34、proxy_buffers 设置缓冲区的数量和大小。Nginx从代理的后端服务器获取的响应信息,会放置到缓冲区。
35、proxy_busy_buffers_size 设置系统很忙时可以使用的proxy_buffers大小,官方推荐的大小为proxy_buffers X 2
36、proxy_temp_file_write_size 指定proxy缓存临时文件的大小。
37、隐藏版本号
两个出现版本号的地方:第一个是HTTP header,第二个是Nginx出错页面。
修改配置文件nginx.conf
(1)在http{}中添加字段
server_tokens off;   #默认是注释掉的
(2)修改php-fpm配置文件fastcgi.conf或fcgi.conf
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;
38、修改nginx版本号
1、需要在源码安装之前进到/src/core/nginx.h文件中修改
#define nginx_version 101010
#define NGINX_VERSION “自定义版本号
#define NGINX_VER “自定义名称/” NGINX_VERSION
2、修改HTTP头信息中的connection字段,防止回显具体版本号
编辑src/http下的ngx_http_header_filter_module.c文件
static char ngx_http_server_string[] = “Server: 自定义” CRLF;
3.定义了http错误码的返回
有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我
修改src/http下的ngx_http_special_response.c文件
static u_char ngx_http_error_tail[] =


自定义
” CRLF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值