高性能Web服务器Nginx的配置与部署Word格式文档下载.docx
- 文档编号:19724994
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:15
- 大小:22.57KB
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx
《高性能Web服务器Nginx的配置与部署Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高性能Web服务器Nginx的配置与部署Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
208.67.222.222;
11.
proxy_pass
http:
//$img_proxy_url/$suffix;
12.
proxy_set_header
referer
//$img_proxy_url"
13.}
4)常用Nginx命令
1.启动Nginx
1.sudo
./sbin/nginx
2.停止Nginx
-s
stop
2.sudo
quit
3.Nginx重载配置
reload
或者:
1.service
nginx
4.指定Nginx配置文件
-c
/usr/local/nginx/conf/nginx.conf
(5)Nginx配置符号
分类:
Unix/Linux-软件安装2012-01-0323:
24290人阅读评论(0)收藏举报
1.容量符号
k千字节
K千字节
m兆字节
M兆字节
2.时间符号
ms毫秒
s秒
m分
h时
d日
w周
M月(按照30天计算)
y年(按照365天计算)
3.示例
1h30m表示1小时30分钟
1y6M表示1年6个月
(6)核心模块之主模块的测试常用指令
1.daemon
含义:
设置是否以守护进程模式运行
语法:
daemonon|off
缺省:
on
示例:
daemonoff;
注意:
生产环境(productionmode)中不要使用daemon指令,这些选项仅用于开发测试(developmentmode)。
2.debug_points
断点调试
debug_points[stop|abort]
none
debug_pointsstop;
在Nginx内有一些assert断言,这些断言允许Nginx,配合调试器中断程序运行、停止或创建core文件。
3.master_process
设置是否启用主进程
master_processon|off
master_processoff;
不要在生产环境(productionmode)中使用master_process指令,这些选项仅用于开发测试(developmentmode)。
4.error_log
指定错误日志文件
error_logfile[debug|info|notice|warn|error|crit]
${prefix}/logs/error.log
error_log/data/nginx/logs/error.logdebug
该命令并非只有在测试(或称为开发)模式下才可以使用,而是在编译时添加了--with-debug参数时,则可以使用error_log指令的额外参数,即:
error_logfile[debug_core|debug_alloc|debug_mutex|debug_event|debug_http|debug_imap];
(7)核心模块之主模块的非测试常用指令
1.error_log
指定存储错误日志的文件
error_log<
file>
[debug|info|notice|warn|error|crit]
${prefix}/logs/error_log
error_logfiledebug;
在编译Nginx使用--with-debug参数,则可以参考《高性能Web服务器Nginx的配置与部署研究——(6)Nginx核心模块的测试常用指令》中的error_log部分
2.include
指定所要包含的Nginx配置文件
include<
file|*>
includevhosts/*.conf或include/home/michael/nginx/conf/nginx-main.conf
(1)include命令可以指定包含一个文件,比如第二个示例。
也可以指定包含一个目录下的所有文件,比如第一个示例。
(2)指定的文件路径的基路径,由编译选项--prefix决定,如果编译时没有指定,则默认的路径是/usr/local/nginx。
3.lock_file
lock_file<
compile-timeoption
lock_file/var/log/lock_file;
Nginx使用acceptmutex来序列化accept()系统调用(syscalls)。
如果是在i386,sparc64,ppc64或amd64平台上用GCC,IntelC++,SunProC++编译器编译的,则Nginx使用CPU原指令实现mutex。
其他情况下,则使用lock_file。
4.pid
指定存储进程ID(即PID)的文件。
pid<
compile-timeoptionExample
pid/var/log/nginx.pid;
可以使用命令kill-HUPcat/var/log/nginx.pid\对Nginx进行进程ID文件的重新加载。
5.ssl_engine
指定使用的openssl引擎。
ssl_engineengine;
视系统而定
你可以使用opensslengine-t命令来查看系统目前支持的openssl引擎。
6.timer_resolution
略
7.user
指定可以使用Nginx的用户
user<
user>
[group]
nobodynobody(第一个nobody是user,第二个nobody是group)
userwwwusers;
8.worker_processes
指定worker进程数
worker_processes<
number>
1
worker_processes4;
最大用户连接数=worker进程数×
worker连接数,即max_clients=worker_processes*worker_connections。
9.worker_cpu_affinity
为worker进程绑定CPU。
worker_cpu_affinitycpumask[cpumask...]
(1)如果有4个CPU,并且指定4个worker进程,则:
worker_cpu_affinity0001001001001000;
(2)如果有4个CPU,并且指定2个worker进程,则:
worker_processes2;
worker_cpu_affinity01011010;
只有Linux平台上才可以使用该指令。
10.worker_priority
指定各worker进程的优先级
worker_priority[-]<
使用该指令可以给woker进程分配优先值。
11.worker_rlimit_core
指定每个worker进程的core文件最大size。
worker_rlimit_core<
max_size>
12.worker_rlimit_nofile
worker进程的filedescriptor可以打开的最大文件数。
worker_rlimit_nofile<
13.worker_rlimit_sigpending
(8)核心模块之事件模块
一、事件模块的作用是什么?
用来设置Nginx处理链接请求。
二、相关指令
1.accept_mutex
设置是否使用连接互斥锁进行顺序的accept()系统调用。
accept_mutex<
on|off>
accept_mutexoff;
2.accept_mutex_delay
设置获得互斥锁的最少延迟时间。
accpet_mutex_delay<
numberofmillisecs>
500ms
accpet_mutex_delay1000ms;
3.debug_connection
设置指定的clients产生debug日志。
debug_connection[ip|CIDR];
debug_connection172.16.44.96;
一段较完整的事件模块代码如下:
error_log/data/nginx/log/error.log;
events{
debug_connection172.16.44.96;
}
4.multi_accept
设置是否允许,Nginx在已经得到一个新连接的通知时,接收尽可能更多的连接。
multi_accept<
off
multi_accepton;
5.rtsig_signo
6.rtsig_overflow_threshold
7.use
use[kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];
如果在./configure的时候指定了不止一种事件模型,那么可以设置其中一个,告诉Nginx使用哪种事件模型。
默认情况下,Nginx会在./configure时找出最适合系统的事件模型。
8.worker_connections
worker_connection<
最大连接数的计算公式如下:
max_clients=worker_processes*worker_connections;
如果作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(filedescriptor)从同一个连接池建立连接到upstream后端。
则最大连接数的计算公式如下:
max_clients=worker_processes*worker_connections/4;
(9)核心模块之HTTP模块基本常用指令
一、HTTP模块的作用是什么?
Nginx的HTTP模块用于控制Nginx的HTTP进程。
二、指令
1.alias
指定location使用的路径,与root类似,但不改变文件的跟路径,仅适用文件系统的路径。
alias<
file-path|directory-path>
N/A
作用域:
http.server.location
location/i/{
alias/home/michael/web/i/;
则请求/i/logo.png则返回/home/michael/web/i/logo.png。
(1)替换路径时,可以使用变量。
(2)alias无法在正则的location中使用。
如果有这种需求,则必须使用rewrite和root。
2.client_body_in_file_only
指定是否将用户请求体存储到一个文件里。
client_body_in_file_only<
on|off>
client_body_in_file_onlyon;
(1)该指令为on时,用户的请求体会被存储到一个文件中,但是请求结束后,该文件也不会被删除;
(2)该指令一般在调试的时候使用。
3.client_body_buffer_size
指定用户请求体所使用的buffer的最大值
client_body_buffer_size<
size>
两个page的大小,一般为8k或16k
client_body_buffer_size512k;
如果用户请求体超过了buffer的大小,则将全部内容或部分内容存储到一个临时文件中。
4.client_body_temp_path
设置存储用户请求体的文件的目录路径
client_body_temp_path<
directorypath>
[level1|level2|level3]
client_body_temp_path/spool/nginx/client_temp12;
5.client_body_timeout
设置用户请求体的超时时间。
client_body_timeout<
time>
client_body_timeout120s;
只有请求体需要被1次以上读取时,该超时时间才会被设置。
且如果这个时间后用户什么都没发,nginx会返回requeststimeout408.
6.client_header_buffer_size
设置用户请求头所使用的buffer大小
client_header_buffer_size<
1k
http.server
client_header_buffer_size2k;
(1)对绝大多数请求来说,1k足以满足请求头所需的buffer;
(2)对于携带有较大cookie或来自于wap用户的请求头来说,1k的buffer一般不够,这时可以使用指令large_client_header_buffers。
7.client_header_timeout
设置用户请求头的超时时间。
client_header_timeout<
1m
client_header_timeout3m;
只有请求头需要被1次以上读取时,该超时时间才会被设置。
8.client_max_body_size
设置所能接收的最大请求体的大小
client_max_body_size<
client_max_body_size2m;
根据请求头中的Content-Length来判断请求体大小是否允许。
如果大于设定值,则返回“RequestEntityTooLarge”(413)错误。
不过要注意的是,浏览器一般并不对这个错误进行特殊显示。
(10)核心模块之HTTP模块Location相关指令
一、基本语法
location[=|~|~*|^~]<
/uri/>
{...}
server
二、匹配规则
1.四种匹配方式
=精确匹配
~大小写敏感正则匹配
~*大小写不敏感正则匹配
^~前缀匹配
2.location匹配指令的执行顺序
首先:
=精确匹配;
其次:
^~前缀匹配;
再次:
~*和~正则匹配,顺序依据出现顺序;
最后:
如果出现正则匹配成功,则采用该正则匹配;
如果无可匹配正则,则采用前缀匹配结果。
三、常用指令
1.internal
表示请求必须来自内部,外部请求会丢给404页面。
internal;
location
(11)应用模块之Memcached模块的两大应用场景
一、应用场景1
最近在一个项目中,用到了Nginx的Memcached模块,所以就在这个系列教程中提前把Memcached模块拿出来写了。
另外发现最近我的博客文章频频被很多用采集器的网站拿走,帮我发扬光大,都不听我说声谢谢。
在此还是希望我的博文被转载的时候能够被注明出处,满足下我小小的虚荣心。
现在有这样一种应用场景:
客户端Client通过Nginx反向代理,访问服务器Server。
每次访问的内容就是将文件File传到Server上,然后可以访问到File的URL被广播到所有Client上,每个Client再加载File。
Analysis:
这么多Client同时加载File,对Server的压力一定很大吧?
读者朋友肯定会说,有了Nginx反向代理,Client访问Server的时候,相应访问的资源就可以被Nginx缓存,减轻了Server的压力。
但有一点要注意,如果这样的话,Nginx反向代理配置的缓存是在有Client访问到Nginx时才会从Server拿来缓存到Nginx上。
可是广播后,所有Client加载File是同时的,如果等地一个访问请求到来并使得Nginx产生缓存后,其他Client接收到广播后的加载响应,恐怕早已经发起并且接近尾声了。
负载压力还是落到Server上。
怎么办呢?
SolutionOverview:
某个Client上传File到Server的同时,将File内容写入到Nginx的缓存中,然后广播后,Client加载File的请求在到达Nginx时去缓存中查找,那么基本是100%命中。
DeploymentSolution:
(1)Reverse-Server(192.168.0.1):
反向代理服务器,用Nginx实现。
对外提供11000端口,接收到HTTP请求后到Cache-Server的14000端口的缓存服务中查找,如果有则返回,如果没有则将请求传递给Store-Server的12000端口。
(2)Store-Server(192.168.0.2):
文件存储服务器,用FastDFS实现。
对外提供12000端口用于下载,接收来自Reverse-Sever的HTTP请求。
对外还提供12500端口用于上传。
(3)Process-Server(192.168.0.3):
业务处理服务器,对外提供13000端口,接收Client传递来的File,并将File通过Store-Server的12500端口转储到Store-Server中。
(4)Cache-Server(192.168.0.4):
文件缓存服务器,用Memcached实现,对外提供14000端口。
接收来自Reverse-Server的读操作,和Process-Server的写操作。
ConfigurationSolution:
(1)FastDFS的配置与部署,请参见GoogleCode上的FastDFS相关wiki。
(2)Memcached部署很简单,wget,tar,./configure,make,makeinstall就OK了。
(3)Process-Server是由我自己实现的,不具有通用性就不说了。
(4)Reverse-Server的Nginx配置文件中http模块中,建立一个用户解决该问题的server,配置方式如下:
1.server
2.
listen
11000;
server_namelocalhost;
default_typetext/html;
location
/
proxy_set_headerX-Real-IP
$remote_addr;
proxy_set_headerHost
$http_host;
proxy_set_headerX-Forwarded-For
$proxy_add_x_forwarded_for;
($request_method
=
POST)
13.
//192.168.0.2:
12000;
14.
break;
15.
16.
17.
$memcached_key
$uri"
18.
memcached_pass
192.168.0.4:
14000;
19.
20.
error_page
501
404
502
/fallback$uri;
21.
22.
23.
/fallback/
24.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 性能 Web 服务器 Nginx 配置 部署
![提示](https://static.bdocx.com/images/bang_tan.gif)