nginx配置文件nginx.conf详解

定义 Nginx 运行的用户和用户组

user www www;

启动进程,通常设置成和 cpu 的数量相等

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

为每个进程分配 cpu,上例中将 8 个进程分配到 8 个 cpu,当然可以写多个,或者将一个 进程分配到多个 cpu。

worker_rlimit_nofile 102400;

这个指令是指当一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打 #开文件数(ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不是那么均匀 #,所以最好与 ulimit -n 的值保持一致。

全局错误日志及 PID 文件

error_log /usr/local/nginx/logs/error.log; #错误日志定义等级,[ debug | info | notice | warn | error | crit ]
pid /usr/local/nginx/nginx.pid;

一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值 ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不均匀.

所以建议与 ulimit -n 的值保持一致。

worker_rlimit_nofile 65535;

工作模式及连接数上限 events {

use epoll; #epoll 是多路复用 IO(I/O Multiplexing)中的一种方 式,但是仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
worker_connections 102400; #单个后台 worker process 进程的最大并发链接 数 (最大连接数=连接数*进程数)
multi_accept on; #尽可能多的接受请求 }

设定 http 服务器,利用它的反向代理功能提供负载均衡支持 http {

设定 mime 类型,类型由 mime.type 文件定义 include mime.types;

default_type application/octet-stream; #设定日志格式
access_log /usr/local/nginx/log/nginx/access.log;

sendfile on;

sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,

对于普通应用必须设为 on

如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O

处理速度,降低系统的 uptime.

autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on; #防止网络阻塞
keepalive_timeout 60;

keepalive 超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后,

继请求时,keepalive-timeout 功能可避免建立或重新建立连接。 tcp_nodelay on; #提高数据的实时响应性

开启 gzip 压缩 gzip on;

gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2; #压缩级别大小,最大为 9,值越小,压缩后比例越小,CPU 处理
更快。

值越大,消耗 CPU 比较高。

gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数

client_body_buffer_size 128k; proxy_connect_timeout 90;
proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k;
区大小
proxy_buffers 4 32k;
这样设置
proxy_busy_buffers_size 64k;

缓冲区代理缓冲用户端请求的最大字节数, #nginx 跟后端服务器连接超时时间(代理连接超

后端服务器数据回传时间(代理发送超时) #连接成功后,后端服务器响应时间(代理接收超时) #设置代理服务器(nginx)保存用户头信息的缓冲

proxy_buffers 缓冲区,网页平均在 32k 以下的话,

高负荷下缓冲大小(proxy_buffers*2)

时)

设定请求缓冲

large_client_header_buffers
client_header_buffer_size 4k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请
求的头部大小不会超过 1k

不过由于一般系统分页都要大于 1k,所以这里设置为分页大小。分页大小可以用命令

getconf PAGESIZE 取得。
open_file_cache max=102400 inactive=20s; #这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文
件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。 open_file_cache_valid 30s;
4 4k;

这个是指多长时间检查一次缓存的有效信息。

open_file_cache_min_uses 1;

open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个

数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在 inactive #包含其它配置文件,如自定义的虚拟主机
include vhosts.conf;

这里为后端服务器 wugk 应用集群配置,根据后端实际情况修改即可,tdt_wugk 为 负载均衡名称,可以任意指定

但必须跟 vhosts.conf 虚拟主机的 pass 段一致,否则不能转发后端的请求。weight 配置权重,在 fail_timeout 内检查 max_fails 次数,失败则剔除均衡。

upstream tdt_wugk {
server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s; server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
} #虚拟主机配置
server {

侦听 80 端口

listen 80;

定义使用 www.wuguangke.cn 访问 server_name www.wuguangke.cn;

设定本虚拟主机的访问日志 access_log logs/access.log main;

root /data/webapps/wugk; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 #默认请求
location ~ /{
root /data/www/wugk; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称 #以下是一些反向代理的配置.
proxy_next_upstream http_502 http_504 error timeout invalid_header; #如果后端的服务器返回 502、504、执行超时等错误,自动将请求转发到
upstream 负载均衡池中的另一台服务器,实现故障转移。 proxy_redirect off;

后端的 Web 服务器可以通过 X-Forwarded-For 获取用户真实 IP proxy_set_header Host $host;

proxy_set_header X-Real-IP remote_addr; proxy_set_header X-Forwarded-Forproxy_add_x_forwarded_for;
proxy_pass http://tdt_wugk; #请求转向后端定义的均衡模块 }

定义错误提示页面

error_page 500 502 503 504 /50x.html;

location = /50x.html {
root html; }

配置 Nginx 动静分离,定义的静态页面直接从 Nginx 发布目录读取。 location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

{
root /data/www/wugk;

expires 定义用户浏览器缓存的时间为 3 天,如果静态页面不常更新,可以 设置更长,这样可以节省带宽和缓解服务器的压力。

expires 3d; }

PHP 脚本请求全部转发到 FastCGI 处理. 使用 FastCGI 默认配置. location ~ .php$ {

root /root;
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param
/data/www/wugk$fastcgi_script_name; include fastcgi_params;
}

设定查看 Nginx 状态的地址 location /NginxStatus {

SCRIPT_FILENAME

stub_status on; }
} }

推荐阅读更多精彩内容

  • 定义Nginx运行的用户和用户组user www www; nginx进程数,建议设置为等于CPU总核心数。 wo...
    程序萌阅读 71评论 0 0
  • #定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。wo...
    看似平淡阅读 98评论 0 0
  • 1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单...
    rosekissyou阅读 8,665评论 5 124
  • 还没有好好努力,时间缺无情的从指缝间流走。回头去想,最对不起的人是自己 一年中受过委屈,沉在心底慢慢消化。没有燃起...
    张家口健民口腔阅读 63评论 0 0
  • 很开心也很舍不得小白训练营今晚就要毕业了,很感谢班班以及学姐的辛勤输出,让我对理财有了意识觉醒,有了概念认识,并且...
    轻舞飞扬_5e1f阅读 182评论 1 9