高性能Web服务器Nginx的配置与部署Word格式文档下载.docx

上传人:b****6 文档编号:19724994 上传时间:2023-01-09 格式:DOCX 页数:15 大小:22.57KB
下载 相关 举报
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx_第1页
第1页 / 共15页
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx_第2页
第2页 / 共15页
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx_第3页
第3页 / 共15页
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx_第4页
第4页 / 共15页
高性能Web服务器Nginx的配置与部署Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

高性能Web服务器Nginx的配置与部署Word格式文档下载.docx

《高性能Web服务器Nginx的配置与部署Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高性能Web服务器Nginx的配置与部署Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

高性能Web服务器Nginx的配置与部署Word格式文档下载.docx

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. 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1