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

centos6.4 32位 配置nginx.conf详细参数

2013-09-07 14:43 513 查看
配置文件nginx.conf
在nginx服务器的主配置文件nginx.conf中,包括全局配置、IO事件配置、HTTP配置这三大块内容
1.由各种配置语句组成,不使用特定的界定标记。全局配置部分包括Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等基本设置。
在做的时候最好先把配置文件备份一下,有备无患嘛,嘻嘻......
[root@68Q ~]# vi /usr/local/nginx/conf/nginx.conf下面这段内容是对Nginx的全局属性配置,代码如下:

#usernobody;worker_processes4;
#error_loglogs/error.log;error_loglogs/error.lognotice;#error_loglogs/error.loginfo;
pidlogs/nginx.pid;
worker_rlimit_nofile65535; events {use epoll;worker_connections65535;}
上面这段代码中每个配置选项的含义解释如下:

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

口worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费1OMB~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服务器相关属性的配置,代码如下:

http {includemime.types;default_typeapplication/octet-stream;
log_formatmain'$remote_addr - $remote_user[$time_local] "$request" ''$status $body_bytes_sent"$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
access_loglogs/access.logmain;
sendfileon;tcp_nopushon;tcp_nodelayon;
#keepalive_timeout0;keepalive_timeout65;client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
下面详细介绍这段代码中每个配置选项的含义。

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

口default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。

下面的代码实现对日志格式的设定。

log_format main '$remote_addr - $remote_user [$time_local] '

' "$request" $status $bytes_sent '

' "$http_referer" "$http_user_agent" '

' "$gzip_ratio "';

log_format download '$remote_addr - $remote_user [$time_local] '

' "$request $status $bytes_sent '

' " $http_referer" "$http_user_agent" '

' $http_range" "$sent http_content_range" ' ;

口log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。

口client_max_body_size用来设置允许客户端请求的最大的单个文件字节数。

口client_header_buffer_size用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。这里设置为32KB。

口large_client_header_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4"为个数,“128K’’为大小,最大缓存为4个128KB。

口sendfile参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodely两个指令设置为on,用于防止网络阻塞。

口keepalive_timeout用于设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。

口client_header_timeout用于设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out (408)"错误。

口client_body_timeout用于设置客户端请求主体读取超时时间,默认值为60。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out (408)”错误。

口send_timeout用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

3.这一步都没做,以了解为主,但绝不会影响启动的,然后就是,Nginx的HttpGzip模块。这个模块支持在线实时压缩输出数据流。反正我是没装,具体安不安这个要看需不需要了,但我把这个也写上,要查看是否安装了此模块,需要使用下面的命令:

[root@localhost conf] # /opt/nginx/sbin/nginx -V

nginx version: nginx/0.7.65

configure arguments: -with-http_stub_status_module--with-http_gzip_static_module

-- prefix=/opt/nginx

通过/opt/nginx/sbin/nginx -V命令可以查看安装Nginx时的编译选项。由输出可知,我们已经安装了HttpGzip模块。

下面是HttpGzip模块在Nginx配置中的相关属性设置:

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version l.1;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

口gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启gzip压缩,实时压缩输出数据流。

口gzip_min_length用于设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是O,不管页面多大都进行压缩。建议设置成大于1K的字节数中华抑郁健康网,小于1K可能会越压越大。

口gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。

口gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,使用默认即可。

口gzip_comp_level用来指定gzip压缩比,1压缩比最小,处理速度最快:9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。

口gzip_types用来指定压缩的类型,无论是否指定,“text/html"类型总是会被压缩的。

口gzlp_vary选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据。

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
不过,第三块这我都没做......

4. server虚拟主机配置

下面介绍对虚拟主机的配置。建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。

server {listen80;server_name192.168.2.1 www.benet.com;
#charset utf-8;
#access_loglogs/host.access.logmain;
location / {roothtml;indexindex.html index.php;}
server标志定义虚拟主机开始;listen用于指定虚拟主机的服务器端口:server_name用来指定IP地址或者域名,多个域名之间用空格分开;index用于设定访问的默认首页地址:root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径;charset用于设置网页的默认编码格式。

access_log logs/www.ithov.com.access.log main;

access_log用来指定此虚拟主机的访问日志存放路径。最后的main用于指定访问日志的输出格式。6.URL匹配配置 URL地垃匹配是Nginx配置中最灵活的部分。location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现 Nginx对动、静态网页的过滤处理。以下这段设置是通过location指令来对网页

5.在最后这段设置中,设置了虚拟主机的错误信息返回页面,通过error_page指令可以定制各种错误信息的返回页面,在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面。特别需要注意的是,这些错误信息的返回页面大小一定要超过512KB,否则会被IE浏览器替换为IE默认的错误页面。
#error_page404/404.html;error_page500 502 503 504/50x.html;location = /50x.html {roothtml;}
上述配置中,listen语句允许同时限定ip地址,采用“IP地址:端口”形式。这是一个模板,下面就详细的再配置基于域名的web。

6.基于域名的虚拟Web主机使用Nginx搭建虚拟机服务器时,每个虚拟Web站点拥有独立的“server { }”配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。(1)准备网站目录及测试文件[root@68Q~]# mkdir -p /var/www/benet[root@68Q ~]# echo"<h1>www.benet.com</h1>" > /var/www/benet/index.html
(2)调整nginx.conf 配置文件
server {listen80;server_name 192.168.2.1 www.benet.com;
#charset utf-8;
access_log logs/benet.access.logmain;
location / {roothtml;indexindex.html index.php;}注意:如果是两个域名,那一定要建两个“server { }”,模式都一样,但是要把;写上,还有就是不要多一个{}或少一个{},这个配置文件有一点错都会导致nginx起不来,所以一定要仔细(3)重启nginx[root@68Q~]# service nginx restartnginx:the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configurationfile /usr/local/nginx/conf/nginx.conf test is successfulstopnginx[ok]startnginx[ok]最后访问[root@68Q~]# elinks http://www.benet.comhttp://www.benet.com/ www.benet.comok

如果访问不了,那就是iptables和selinux的问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息