nginx配置详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx配置详解相关的知识,希望对你有一定的参考价值。
nginx.conf配置详解:
全局配置:
user nginx; #运行用户
worker_processes 4; #工作进程数,通常等于CPU数量或者核心数(-1)
error_log /var/logs/nginx/error.log crit; #错误日志位置和级别
pid /var/run/nginx.pid; #pid(进程标识符)存放位置
worker_rlimit_nofile 51200; #worker进程打开的最大文件数
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
#现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
events段:控制nginx性能
events
{
use epoll; #epoll的I/O 模型
worker_connections 51200; #每个worker进程的最大链接数,默认为1024
}
use epoll; #epoll的I/O 模型
worker_connections 51200; #每个worker进程的最大链接数,默认为1024
}
http端:http请求和处理
http
{
include mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream; #设置文件使用的默认的MIME-type
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客户端请求头部的缓冲区大小
large_client_header_buffers 4 32k; #客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。
client_max_body_size 50m; #设定通过nginx上传文件的大小
sendfile on; #开启sendfile
server_tokens off; #隐藏版本信息
tcp_nopush on; #在一个数据包里发送所有头文件,而不一个接一个的发送
keepalive_timeout 120; #keepalive超时时间
tcp_nodelay on; #不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性
gzip on; #开启文件压缩
gzip_min_length 1k; #要指定要压缩的响应的最小长度,请使用该gzip_min_length指令。默认值为20字节
{
include mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream; #设置文件使用的默认的MIME-type
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客户端请求头部的缓冲区大小
large_client_header_buffers 4 32k; #客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。
client_max_body_size 50m; #设定通过nginx上传文件的大小
sendfile on; #开启sendfile
server_tokens off; #隐藏版本信息
tcp_nopush on; #在一个数据包里发送所有头文件,而不一个接一个的发送
keepalive_timeout 120; #keepalive超时时间
tcp_nodelay on; #不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性
gzip on; #开启文件压缩
gzip_min_length 1k; #要指定要压缩的响应的最小长度,请使用该gzip_min_length指令。默认值为20字节
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 3; #设置压缩比
gzip_types text/plain application/x-javascript text/css application/xml; #默认情况下,NGINX仅使用MIME类型来压缩响应text/html。要使用其他MIME类型压缩响应,请包括该gzip_types指令并列出其他类型
log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
gzip_types text/plain application/x-javascript text/css application/xml; #默认情况下,NGINX仅使用MIME类型来压缩响应text/html。要使用其他MIME类型压缩响应,请包括该gzip_types指令并列出其他类型
log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
#日志格式设置。
#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
#$remote_user:用来记录客户端用户名称;
#$time_local: 用来记录访问时间与时区;
#$request: 用来记录请求的url与http协议;
#$status: 用来记录请求状态;成功是200,
#$body_bytes_sent :记录发送给客户端文件主体内容大小;
#$http_referer:用来记录从那个页面链接访问过来的;
#$http_user_agent:记录客户浏览器的相关信息;
include host/*.host; #导入其他配置文件
}
#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
#$remote_user:用来记录客户端用户名称;
#$time_local: 用来记录访问时间与时区;
#$request: 用来记录请求的url与http协议;
#$status: 用来记录请求状态;成功是200,
#$body_bytes_sent :记录发送给客户端文件主体内容大小;
#$http_referer:用来记录从那个页面链接访问过来的;
#$http_user_agent:记录客户浏览器的相关信息;
include host/*.host; #导入其他配置文件
}
host目录下可以放各个站点的server
vim ./host/www.xxx.com
server
{
listen 80; #监听80端口
server_name www.xxx.com; #域名
root /data/web/wordpress; #根目录
index index.php index.html; #默认首页
error_page 404 http://promotion.alicdn.com/help/oss/error.html; #404页面,这里是淘宝的公益页面
access_log /data/logs/nginx/www.access.log; #定义该站点的访问日志存放位置;日志格式在http端已经定义过了
location ~ \.php$ #定义一个location,以.php结尾的文件转交给PHP解析
listen 80; #监听80端口
server_name www.xxx.com; #域名
root /data/web/wordpress; #根目录
index index.php index.html; #默认首页
error_page 404 http://promotion.alicdn.com/help/oss/error.html; #404页面,这里是淘宝的公益页面
access_log /data/logs/nginx/www.access.log; #定义该站点的访问日志存放位置;日志格式在http端已经定义过了
location ~ \.php$ #定义一个location,以.php结尾的文件转交给PHP解析
{
include fastcgi-php5.5.conf;
}
}
include fastcgi-php5.5.conf;
}
}
这样配置不叫简洁;
以上是关于nginx配置详解的主要内容,如果未能解决你的问题,请参考以下文章