2018-05-25 Nginx 配置文件

今天工作主要是起项目,打开网站曝出请求过多的问题,由于后台没有抛任何异常,所以首先想到的是nginx的问题,又重新把nginx的配置文件重新温习下

首先是nginx的模块分为handler、filter、upstream。其中upstream模块,式nginx跨越单机的限制。完成网络数据的接收、处理和转发。

数据转发功能,为nginx提供了跨越单机的横向处理能力,使nginx拜托只能为中端节点提供单一功能的限制,而使它具备了网络应用级别的拆分、封装和整合的战略功能。在云模式大行其道的今天,数据转发使nginx有能力构建一个网络应用的关键组件。

nginx的配置系统提供的层次化和松耦合使得系统的扩展也达到了比较高的程度。

Upstream模块接口:

本质上说属于handler,只是不产生自己的内容,而是通过请求后端服务器得到内容,所以才被成为upstream(上游)。请求并取得响应内容的整个过程已经被封到nginx内部。所以upstream模块只需要开发若干的回调函数,完成构造请求和解析响应等具体的工作。

create_request生成发送到后端服务器的请求缓冲(缓冲链),在初始化upstream

时使用。

reinit_request在某台后端服务器出错的情况,nginx会尝试另一台后端服务器。

nginx选定新的服务器以后,会先调用此函数,以重新初始化

upstream模块的工作状态,然后再次进行upstream连接。

process_header处理后端服务器返回的信息头部。所谓头部是与upstream server

通信的协议规定的,比如HTTP协议的header部分,或者memcached

协议的响应状态部分。

abort_request在客户端放弃请求时被调用。不需要在函数中实现关闭后端服务

器连接的功能,系统会自动完成关闭连接的步骤,所以一般此函

数不会进行任何具体工作。

finalize_request正常完成与后端服务器的请求后调用该函数,与abort_request

相同,一般也不会进行任何具体工作。

input_filter处理后端服务器返回的响应正文。nginx默认的input_filter会

将收到的内容封装成为缓冲区链ngx_chain。该链由upstream的

out_bufs指针域定位,所以开发人员可以在模块以外通过该指针

得到后端服务器返回的正文数据。memcached模块实现了自己的

input_filter,在后面会具体分析这个模块。

input_filter_init初始化input filter的上下文。nginx默认的input_filter_init

直接返回。


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

1、轮询(默认)

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

2、weight 

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

例如 upstream xxx{

seserver 127.0.0.1 weight=10;

server 127.0.0.2 weight=10;

}

3、ip_hash

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

例如

upstream xxx{

ip_hash;

server 192.168.0.18:88;

server 192.168.0.19:88;

}

3、fair(第三方)

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

upstream xxx{

server server1;

server server2;

fair;

}

4、url hash(第三方)

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

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

upstream xxx{

server server1;

server server2;

hash $request_uri;

hash_method crc32;

}


tips

upstream xxx{

ip_hash;

server server1 down;

server server2 weight=2;

server server3;

server  server4 backup;

}

其中 down表示当前的server暂不参与负载;

weight 值越大,负载的权重越大。

max_fails:允许请求失败的次数默认为1,超过返回错误。

fail_timeout:max_fails次失败后,暂停的时间

backup 其他所有的非backup机器down或者忙的时候,才请求到backup机器。所以压力最轻。


server{

listen 80;--监听接口

server_name xxxx.xxx.com;--配置访问域名

location ~*\.(map3|exe)${}对以“MP3或者exe结尾的地址进行负载均衡。

proxy_pass http://xxxx_server

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

将代理服务器收到的用户信息传到真实服务器上

}

location ~ /\.ht {deny all;}

#禁止访问.htxxx文件

}


注释:变量

Ngx_http_core_module模块支持内置变量,他们的名字和apache的内置变量是一致的。

首先是说明客户请求title中的行,例如$http_user_agent,$http_cookie等等。

此外还有其它的一些变量

$args此变量与请求行中的参数相等

$content_length等于请求行的“Content_Length”的值。

$content_type等同与请求头部的”Content_Type”的值

$document_root等同于当前请求的root指令指定的值

$document_uri与$uri一样

$host与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样

$limit_rate允许限制的连接速率

$request_method等同于request的method,通常是“GET”或“POST”

$remote_addr客户端ip

$remote_port客户端port

$remote_user等同于用户名,由ngx_http_auth_basic_module认证

$request_filename当前请求的文件的路径名,由root或alias和URI request组合而成

$request_body_file

$request_uri含有参数的完整的初始URI

$query_string与$args一样

$sheeme http模式(http,https)尽在要求是评估例如

Rewrite ^(.+)$ $sheme://example.com$; Redirect;

$server_protocol等同于request的协议,使用“HTTP/或“HTTP/

$server_addr request到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。

$server_name请求到达的服务器名

$server_port请求到达的服务器的端口号

$uri等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index

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

推荐阅读更多精彩内容