nginx.conf配置详解

ginx的配置文件nginx.conf配置详解如下:

user nginx nginx ;

#Nginx用户及组:用户 组。window下不指定

worker_processes 8;

#工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。默认为1

error_log  logs/error.log;

error_log  logs/error.log  notice;

error_log  logs/error.log  info;

#制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

pid        logs/nginx.pid;

#指定nginx进程运行文件存放地址

worker_rlimit_nofile 204800;

#指定每个进程可以打开的最大文件描述符:数目,即能打开的文件数。现在在Linux 2.6内核下开启文件打开数为65535。理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

events

{

accept_mutex on;  #设置网路连接序列化,防止惊群现象发生,默认为on

multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

use epoll;

#使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

worker_connections 204800;

#指定每个工作进程的最大连接数量,默认为512。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。并发总数是 worker_processes 和 worker_connections 的乘积,即 max_clients = worker_processes * worker_connections

keepalive_timeout 60;

#keepalive超时时间。

client_header_buffer_size 4k;

#客户端请求头部的缓冲区大小,通常设置为分页大小,分页大小可以用命令getconf PAGESIZE取得

open_file_cache max=65535 inactive=60s;

#为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存

open_file_cache_valid 80s;

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

open_file_cache_min_uses 1;

open_file_cache指令中的inactive参数时间内文件的最少使用次数

}

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

http

{

include mime.types;

#设定mime类型,类型由mime.type文件定义,文件扩展名与文件类型映射表

default_type  application/octet-stream;

#默认文件类型,默认为text/plain

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

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

#日志格式设置。

$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息;

access_log  logs/host.access.log  main;

access_log  logs/host.access.404.log  log404;

#用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;

client_header_buffer_size 4k;

#客户端请求头部的缓冲区大小。

large_client_header_buffers 8 128k;

#客户请求头缓冲大小。

open_file_cache max=102400 inactive=20s;

#这个指令指定缓存是否启用。

open_file_cache_errors

语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off  使用字段:http, server, location

open_file_cache_min_uses

语法:open_file_cache_min_uses number 默认值:open_file_cache_min_uses 1  使用字段:http, server, location

open_file_cache_valid

语法:open_file_cache_valid time 默认值:open_file_cache_valid 60  使用字段:http, server, location

client_max_body_size 300m;

#设定通过nginx上传文件的大小

sendfile on;

#nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

tcp_nopush on;

此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用

sendfile_max_chunk 100k;

#每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

proxy_connect_timeout 90;

#后端服务器连接的超时时间_发起握手等候响应超时时间

proxy_read_timeout 180;

#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)

proxy_send_timeout 180;

#后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

proxy_buffer_size 256k;

#设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小

proxy_buffers 4 256k;

#设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k

proxy_busy_buffers_size 256k;

proxy_temp_file_write_size 256k;

#设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长

proxy_temp_path /data0/proxy_temp_dir;

proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

#设置内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

keepalive_timeout 65;

#连接超时时间,默认为75s,可以在http,server,location块。

client_body_buffer_size 512k;

如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。

无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误

proxy_intercept_errors on;

表示使nginx阻止HTTP应答代码为400或者更高的应答。

gzip  on;

gzip_disable "MSIE [1-6].";

#开启gzip压缩

upstream mysvr {

server 127.0.0.1:7878;

server 127.0.0.1:8028;

server 127.0.0.1:8029;

server 192.168.10.121:3333 backup;  #热备

}

#nginx的upstream目前支持5种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

例如:

upstream bakend {

server 192.168.0.14 weight=10;

server 192.168.0.15 weight=10;

}

3、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

例如:

upstream bakend {

ip_hash;

server 192.168.0.14:88;

server 192.168.0.15:80;

}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backend {

server server1;

server server2;

fair;

}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {

server squid1:3128;

server squid2:3128;

hash $request_uri;

hash_method crc32;

##配置虚拟机

server

{

listen 80;

#配置监听端口

server_name www.nginx.cn;

#配置访问域名

location ~* \.(mp3|exe)$ {

#对以“mp3或exe”结尾的地址进行负载均衡

proxy_pass http://img_relay$request_uri;

#设置被代理服务器的端口或套接字,以及URL

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

deny 127.0.0.1;  #拒绝的ip

allow 172.18.5.54; #允许的ip

}

location / {

#定义首页索引文件的名称

index index.php index.html index.htm;

}

#默认请求

error_page  500 502 503 504 /50x.html;  # 定义错误提示页面

location /NginxStatus {

stub_status on;

access_log on;

auth_basic "NginxStatus";

auth_basic_user_file conf/htpasswd;

}

#设定查看Nginx状态的地址

location ~ /\.ht {

deny all;

}

#禁止访问.htxxx文件

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:...
    IT码农工阅读 840评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 1,984评论 0 9
  • user nginx nginx ; Nginx用户及组:用户组。window下不指定 worker_proces...
    执著_7a69阅读 618评论 0 1
  • ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user...
    忆飞阅读 760评论 0 0