nginx几个初级会计知识点汇总总

没有更多推荐了,
不良信息举报
举报内容:
nginx 知识点列表
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
不良信息举报
举报内容:
nginx知识汇总
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!点击这里,将文章分享到自己的动态
[Nginx入门到实战]知识点补充-Nginx的优化参数worker_connections
(Nginx的服务优化篇中),同学得提出的问题,如下:
关于Nginx的worker_connections到底是什么?如果设置过小会有什么影响,下面我用一个场景演示下:
首先,我的场景如下:
然后,说下Nginx下的配置
1、nginx.conf
worker_processes
worker_connections
2、default.conf
location / {
proxy_pass http://www.youku.com/;
index index.html index.
location /status {
3 最后,用ab 工具进行压测:
场景1、将worker_connections 2,ab -c 1
curl的结果如下:
http://116.62.103.228/
HTTP/1.1 500 Internal Server Error
Server: nginx/1.12.1
Date: Tue, 15 Aug :05 GMT
Content-Type: text/html
Content-Length: 537
Connection: close
场景2、将worker_connections 4,ab -c 1
curl 正常,返回200;
然后,将worker_connections 6,ab -c 2
可以支持到并发两个连接。
场景1、2 结论:反向代理的模式下,客户端n个请求,服务端需要建立n2+2个连接。发现需要多余出两个连接
所以 最大的用户连接数 = (worker_connections
worker_processes - 2)/2
场景3、将worker_connections 12,ab -n 20 -c 3
访问我的连接状态地址:
Active connections: 4
用netstat查看:
发现除开本身访问/status连接,正好连接数为:3个
场景3得出结论:
worker_connections 限制指的是单个worker对并发的连接数。
场景4 加大并发数目 ab -c 9如下:
ab -n 9 -c 9
出现这个错误:apr_socket_recv: Connection reset by peer
另外,再查看nginx的error log出现如下:
23:13:36 [alert] : 12 worker_connections are not enough
23:13:36 [alert] : 12 worker_connections are not enough
23:13:36 [alert] : 12 worker_connections are not enough
23:13:36 [alert] : 12 worker_connections are not enough
本文原创发布于慕课网 ,转载请注明出处,谢谢合作
若觉得本文不错,就分享一下吧!
评论加载中...
看过此文的用户,还看了以下文章
正在加载中
Python工程师
作者相关文章没有更多推荐了,
不良信息举报
举报内容:
Nginx http 一些小知识点
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Nginx知识点全面总结
第2页_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Nginx知识点全面总结
来源:cnblogs.com/f-ck-need-u&
作者:骏马金龙
5. nginx配置文件简单说明
nginx的配置文件有很多个,如下。其中主配置文件为nginx.conf,其他配置文件在需要的时候使用include指令将其包含到主配置文件中。
[root@xuexi ~]
fastcgi.conf
fastcgi_params
mime.types
nginx.conf
scgi_params
uwsgi_params
fastcgi.conf.default
fastcgi_params.default
mime.types.default
nginx.conf.default
scgi_params.default
uwsgi_params.default
其中".default"后缀的是对应前缀配置文件的备份配置文件,".params"是对应前缀的参数文件。如fastcgi.conf是和fastcgi相关参数的配置文件,fastcgi.params是fastcgi的参数文件,fastcgi.conf.default是fastcgi.conf的备份文件。
关于主配置文件nginx.conf,由于Nginx高度模块化,所以它是分段配置的,核心模块为core,对应配置文件中的Main和Events段。此外还有其他一些模块。配置文件中每一个指令必须以分号";"结束,否则语法错误。
5.1 main和events段
Main用于配置错误日志、进程及权限等相关的参数,Events用于配置IO模型,如epoll、kqueue、select或poll等,它们是必备模块。如下配置:
worker_processes
worker_connections
multi_accept on;
accept_mutex on
如果某个文件采用了相对路径,则其相对的基准为basedir。例如编译时--prefix指定为/usr/local/nginx,则指定pid为logs/nginx.pid时,其实际路径为/usr/local/nginx/logs/nginx.pid。
worker_processes的值和work_connections的值决定了最大并发数量。例如上面的配置中,每个worker进程最大允许1024个连接,配置了4个worker进程,所以并发数量为6。但在反向代理场景中计算方法不同,因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接,所以最大并发数计算方式为:worker_processes*worker_connections/2。此外还需注意,除了和客户端的连接、与后端服务器的连接,nginx可能还会打开其他的连接,这些都会占用文件描述符,从而影响并发数量的计算。最后还需注意,最大并发数量还受"允许打开的最大文件描述符数量"限制,可以使用"worker_rlimit_nofile"指令修改或直接修改操作系统的对应内核参数。
可以在main段使用worker_cpu_affinity指令绑定CPU核心。nginx通过位数识别CPU核心以及核心数,指定位数上占位符为1表示使用该核心,占位符为0表示不使用该核心。例如2核cpu的位数分别为01和10,4核的位数分别为10以及0001,同理8核和16核。在结合worker_processes指令一起使用时,要注意worker进程和核心的对应方式,例如:
worker_processes
worker_cpu_affinity 0001 0010 0100 1000;
worker_processes
worker_cpu_affinity 0101 1010;
在events段,可以使用"use"指令可以指定使用哪种I/O模型,Linux上默认是epoll,通常可以不用手动去设置,因为nginx默认会采用最佳配置。
以下是main段和events段的配置示例,大多数采用的默认值,需要修改的大致就是worker数量、每个worker最大连接数以及进程绑定cpu。
worker_processes
worker_connections
5.2 http段
5.2.1 配置文件概览
http段是由http相关模块支持的。以下是默认配置项。注意,http根段下使用相对路径是相对conf目录的,如"include extra/.conf"表示的是conf/extra/.conf;非根段内的相对路径如server段内使用相对路径是相对于的。
default_type
application/octet-
keepalive_timeout
server_name
location / {
index.html index.
error_page
500 502 503 504
location = /50x.html {
5.2.2 root指令和alias指令
root指令设置站点根目录,即httpd的documentroot,但又有所不同,因为nginx可以在多个上??文位置处使用root指令,例如Location容器中。
如果配置如下:
location /i/ {
root /data/w3;
那么nginx将使用文件/data/w3/i/top.gif响应请求"/i/top.gif"。
root指令仅仅只是将匹配的URI追加在root路径后,如果要改变URI,应该使用alias指令,它会对URI进行替换。例如:
location /i/ {
alias /data/w3/images/;
那么nginx将使用文件/data/w3/images/top.gif响应请求/i/top.gif。因此,如果alias指令的路径最后一部分包含了URI,则最好使用root指令,而非alias指令,虽然它们都能成功响应。
location /images/ {
alias /data/w3/images/;
location /images/ {
root /data/w3/;
它们都能使用相对路径,相对的是prefix。例如编译路径为/usr/local/nginx,则"root html"指的是"/usr/local/nginx/html"。
与root和alias指令相关的变量为$document_root、$readpath_root。其中$document_root的值即是root指令、alias指令的值,而$realpath_root的值是对root、alias指令进行绝对路径换算后的值。
5.2.3 location容器
该指令对规范化后的URI进行匹配,并对匹配的路径封装一系列指令。 语法:
location [ = | ~ | ~* | ^~ ] uri { ... }
其中: location /uri/ {}:表示对/uri/目录及其子目录下的所有文件都匹配。所以"location / {}"的匹配范围是最大的。location = /uri/ {}:表示只对目录或文件进行匹配,不对目录中的文件和子目录进行匹配。所以一般只用来做文件匹配location ~ /uri/ {}:表示区分大小写的正则匹配。location *~ /uri/ {}:表示不区分大小写的正则匹配。location ^~ /uri/ {}:表示禁用正则匹配,即精确字符串匹配,此时正则中的元字符被解释成普通字符。
它们的匹配优先级规则为:nginx先检查URI的前缀路径,在这些路径中找到最精确匹配请求URI的路径。然后nginx按在配置文件中的出现顺序检查正则表达式路径,匹配上某个路径后即停止匹配并使用该路径的配置,否则使用最大前缀匹配的路径的配置。
使用"="前缀可以定义URI和路径的精确匹配。如果发现匹配,则终止路径查找。例如请求"/"很频繁,定义"location = /"可以提高这些请求的处理速度,因为查找过程在第一次比较以后即结束。
以下是一个优先级的示例。
location = / {
[ configuration A ]
location / {
[ configuration B ]
location /documents/ {
[ configuration C ]
location ^~ /images/ {
[ configuration D ]
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
请求"/"能匹配A和B,但最精确匹配为A。请求"/index.html"的前缀"/"能匹配A和B,但A只能匹配"/"自身,因此最终匹配配置B。(前缀也能匹配E,但文件名无法匹配)请求"/documents/document.html"的前缀能匹配B和C,但C更精确,因此匹配配置C。(前缀也能匹配E,但文件名无法匹配)请求"/images/1.gif"的前缀能匹配B、D和E,且D和E都是最长路径匹配,但^~优先级更高,因此匹配配置D。请求"/documents/1.jpg"的前缀能匹配B、C,同样也能匹配E,且E比B的匹配更精确,因此最终匹配配置E。
大致可以将规则简化为如下优先级:
(location = uri ) & (location ^~ uri) & (location *~|~ uri) & (location uri)
即等号优先级最高,非正则匹配次之,再之后是正在匹配,它们之间有位置的先后顺序,优先级最低的是没有使用任何符号的匹配。
由此也可以知道,"location / {}"这种方式是一种特殊的uri匹配,无论什么uri路径,都能往这里面装,可以认为它是默认匹配,当其它location都匹配不上时就会匹配它。
5.2.4 error_page指令
当出现对应状态码的错误时,指定返回的URI路径。语法为:
error_page
... [=[response]]
配置文件中的error_page部分默认为:
location / {
index.html index.
error_page
500 502 503 504
location = /50x.html {
上面的配置文件中,假如取消了404错误的error_page行注释,当出现404错误时,其uri为/404.html,然后会对其进行location的匹配,由于只有"location / {}"能匹配到,所以它的目录为/html/,即404.html文件路径为/html/404.html。对于50x的error_page,其uri为"/50x.html",所以会对其进行location匹配,发现可以精确匹配到"location = /50x.html {}",当然"location / {}"也能匹配到,但是它的优先级更低,所以当出现50x错误时,将从/html目录下寻找50x.html,这里正好和"location / {}"重复了,但它们的匹配过程是不一样的。假如改为如下配置:
location / {
index.html index.
error_page
500 502 503 504
location = /50x.html {
/www/a.com/;
出现50x错误时,将返回/www/a.com/50x.html文件,而不再是/html/50x.html。
5.2.5 allow和deny
这两个指令由ngx_http_access_module模块提供,用于允许或限制某些IP地址的客户端访问。nginx中的allow和deny规则很简单,从上向下匹配,只要匹配到就停止。例如:
allow 10.0.0.8
allow 192.168.100.0/24
允许10.0.0.8和192.168.100网段的访问,其他的都拒绝。
用于在响应首部中添加字段。例如:
add_header RealPath $realpath_root;
将添加一个名为RealPath的字段,值为变量realpath_root的值。
[root@xuexi ~]
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Tue, 17 Oct 2017 08:10:14 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 17 Oct 2017 03:20:10 GMT
Connection: keep-alive
ETag: "59e576ea-264"
RealPath: /usr/local/nginx-1.12.1/html
Accept-Ranges: bytes
5.3 虚拟主机和server_name指令
nginx使用server容器定义一个虚拟主机。在nginx中,没有严格区分基于IP和基于名称的虚拟主机,它们通过listen指令和server_name指令结合起来形成不同的虚拟主机。
listen 80;
server_name 192.168.100.25;
location / {
root /www/longshuai/;
index index.html index.
listen 80;
server_name 192.168.100.26;
location / {
root /www/xiaofang/;
index index.html index.
listen 80;
server_name www.longshuai.
location / {
root /www/longshuai/;
index index.html index.
listen 80;
server_name www.xiaofang.
location / {
root /www/xiaofang/;
index index.html index.
listen 80;
server_name 192.168.100.25;
location / {
root /www/longshuai/;
index index.html index.
listen 8080;
server_name 192.168.100.25;
location / {
root /www/xiaofang/;
index index.html index.
其中server_name指令可以定义多个主机名,第一个名字为虚拟主机的首要主机名。例如:
server_name
example.com
www.example.
主机名中可以含有星号("*"),以替代名字的开始部分或结尾部分(只能是起始或结尾,如果要实现中间部分的通配,可以使用正则表达式)。例如"*.example.org"不仅匹配www.example.org,也匹配www.sub.example.org。下面两条指令是等价的。
server_name
example.com
*.example.com
www.example.*;
server_name
.example.com
www.example.*;
也可以在主机名中使用正则表达式,就是在名字前面补一个波浪线("~"):
server_name
www.example.com
~^www\d+\.example\.com$;
nginx允许定义空主机名:
server_name
这种主机名可以让虚拟主机处理没有"Host"首部的请求,而不是让指定"地址:端口"的默认虚拟主机来处理,而这正是本指令的默认设置。即使用非默认的虚拟主机处理请求头中不含"Host"字段的请求。一般这样的请求处理方式是直接丢弃请求,并返回一个非标准的状态码来立即关闭连接,例如上面的444。
如果server块中没有定义server_name,nginx使用空名字作为虚拟主机名。2
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 nginx有几个模块 的文章

 

随机推荐