一、常用功能优化

1、网络连接的优化:

只能在events模块设置,用于防止在同一时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的nginx会影响以部分性能。

  1. events {
  2. accept_mutex on; #优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,因此nginx刚安装完以后要进行适当的优化。
  3. }

2、设置是否允许同时接收多个网络连接:

只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个,配置语法如下:

events {
accept_mutex on;
multi_accept on; #打开同时接受多个新网络连接请求的功能。
}

3、隐藏Nginx版本号:

server_tokens off; #在http 模块当中配置

4、选择事件驱动模型:

Nginx支持众多的事件驱动,比如select、poll、epoll,只能设置在events模块中设置:

events {
accept_mutex on;
multi_accept on;
use epoll; #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多
}

5、配置单个工程的最大连接数:

通过workerconnections _number;进行设置,numebr为整数,number的值不能大于操作系统能打开的最大的文件句柄数,使用ulimit -n可以查看当前操作系统支持的最大文件句柄数,默认为为1024.

events {
    worker_connections  102400; #设置单个工作进程最大连接数102400
    accept_mutex on;
    multi_accept on;
    use epoll;
}

6、定义MIME-Type:

在浏览器当中可以显示的内容有HTML/GIF/XML/Flash等内容,浏览器为取得这些资源需要使用MIME Type,即MIME是网络资源的媒体类型,Nginx作为Web服务器必须要能够识别全都请求的资源类型,在nginx.conf文件中引用了一个第三方文件,使用include导入:

include mime.types;
default_type application/octet-stream;

7、配置允许sendfile方式传输文件:

由后端程序负责把源文件打包加密生成目标文件,然后程序读取目标文件返回给浏览器;这种做法有个致命的缺陷就是占用大量后端程序资源,如果遇到一些访客下载速度巨慢,就会造成大量资源被长期占用得不到释放(如后端程序占用的CPU/内存/进程等),很快后端程序就会因为没有资源可用而无法正常提供服务。通常表现就是 nginx报502错误,而sendfile打开后配合location可以实现有nginx检测文件使用存在,如果存在就有nginx直接提供静态文件的浏览服务,因此可以提升服务器性能.
可以配置在http、server或者location模块,配置如下:

 sendfile        on;
    sendfile_max_chunk 512k;   #Nginxg工作进程每次调用sendfile()传输的数据最大不能超出这个值,默认值为0表示无限制,可以设置在http/server/location模块中。

8、配置Nginx工作进程最大打开文件数:

worker_rlimit_nofile 65535;

9、会话保持时间:

用户和服务器建立连接后客户端分配keep-alive链接超时时间,服务器将在这个超时时间过后关闭链接,我们将它设置低些可以让ngnix持续工作的时间更长,1.8.1默认为65秒,一般不超过120秒。

 keepalive_timeout  65 60;  #后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
  Keep-Alive:timeout=60  #浏览器收到的服务器返回的报文

如果设置为0表示关闭会话保持功能,将如下显示:
  Connection:close  #浏览器收到的服务器返回的报文