0 Comments

配置与调试Nginx(1)

发布于:2013-02-26  |   作者:广州网站建设  |   已聚集:人围观
配置与调试Nginx(1)

Nginx安装完毕后,会产生相应的安装目录,根据前面的安装路径,Nginx的配置文件路径为/opt/nginx/conf,其中nginx.conf为Nginx的主配置文件。这里重点介绍nginx.conf这个配置文件。

Nginx配置文件主要分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。main部分设置的指令将影响其他所有设置;server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。这四者之间的关系如下:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。

在这4个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令。同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、Http Gzip Static模块和Http Addition模块等。

下面通过一个Nginx配置实例,详细介绍nginx.conf每个指令的含义。为了能更清楚地了解Nginx的结构和每个配置选项的含义,这里按照功能点将Nginx配置文件分为7个部分依次讲解。下面就围绕这7个部分进行介绍。

1. Nginx的全局配置

下面这段内容是对Nginx的全局属性配置,代码如下:


  1. user  nobody nobody;  
  2. worker_processes  4;  
  3. error_log  logs/error.log  notice;  
  4. pid        logs/nginx.pid;  
  5. worker_rlimit_nofile 65535;  
  6. events{  
  7.     use epoll;  
  8.     worker_connections      65536;  
  9.       } 

上面这段代码中每个配置选项的含义解释如下:

user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。

worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10MB~12MB内存。根据经验,一般指定一个进程足够了,如果是多核CPU,建议指定和CPU的数量一样多的进程数即可。

error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。

pid是个主模块指令,用来指定进程id的存储文件位置。

worker_rlimit_nofile用于绑定worker进程和CPU, Linux内核2.4以上可用。

events指令用来设定Nginx的工作模式及连接数上限。

use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。

worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即max_client=worker_processes*worker_connections,在作为反向代理时变为:max_clients = worker_processes * worker_connections/4。

进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。

2. HTTP服务器配置

接下来开始对HTTP服务器进行配置。

下面这段内容是Nginx对HTTP服务器相关属性的配置,代码如下:


  1. http{  
  2. include       conf/mime.types;  
  3. default_type  application/octet-stream;  
  4. log_format main '$remote_addr - $remote_user [$time_local] '  
  5.     '"$request" $status $bytes_sent '  
  6.     '"$http_referer" "$http_user_agent" '  
  7.     '"$gzip_ratio"';  
  8.     log_format download '$remote_addr - $remote_user [$time_local] '  
  9.     '"$request" $status $bytes_sent '  
  10.     '"$http_referer" "$http_user_agent" '  
  11.     '"$http_range" "$sent_http_content_range"';  
  12. client_max_body_size  20m;  
  13. client_header_buffer_size    32k;  
  14. large_client_header_buffers  4 32k;  
  15. sendfile  on;  
  16. tcp_nopush     on;  
  17. tcp_nodelay    on;  
  18. keepalive_timeout 60;  
  19. client_header_timeout  10;  
  20. client_body_timeout    10;  
  21. send_timeout           10; 

下面详细介绍这段代码中每个配置选项的含义。

include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。

广州网站建设,网站建设,广州网页设计,广州网站设计

标签:
飞机