Nginx配置反向代理服务器

首先,在阅读《深刻理解Nginx模块》后,大致了解了配置反向代理服务器一些常见的配置。以下进行说明:”html

 

l  Nginx worker进程个数
语法: worker_processes number;
默认: worker_processes 1;
master/worker运行方式下, 定义worker进程的个数。
worker进程的数量会直接影响性能。 那么, 用户配置多少个worker进程才好呢? 这实际上与业务需求有关。
每一个worker进程都是单线程的进程, 它们会调用各个模块以实现多种多样的功能。 若是这些模块确认不会出现阻塞式的调用, 那么, 有多少CPU内核就应该配置多少个进程; 反之, 若是有可能出现阻塞式调用, 那么须要配置稍多一些的worker进程。nginx

 

l  指定Nginx worker进程能够打开的最大句柄描述符个数
语法: worker_rlimit_nofile limit;
设置一个worker进程能够打开的最大文件句柄数。
后端

 

l  选择事件模型
语法: use[kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];
默认: Nginx会自动使用最适合的事件模型。
对于Linux操做系统来讲, 可供选择的事件驱动模型有pollselectepoll三种。 epoll固然是性能最高的一种, 在9.6节会解释epoll为何能够处理大并发链接。(由于异步+io复用)浏览器

l  每一个worker的最大链接数
语法: worker_connections number;
定义每一个worker进程能够同时处理的最大链接数。缓存

 

l  开启或者关闭gzip模块服务器

语法: gzip on|off
默认值: gzip off
做用域: http, server, location, if (x) location
![if !supportLineBreakNewLine]>
并发

l  gzip_comp_level gzip压缩比
语法: gzip_comp_level 1..9
默认值: gzip_comp_level 1
做用域: http, server, location
gzip
压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。
异步

 

l  HTTP请求包体的最大值性能

语法: client_max_body_size size;
默认: client_max_body_size 1m;
配置块: httpserverlocation
浏览器在发送含有较大HTTP包体的请求时, 其头部会有一个Content-Length字段,client_max_body_size是用来限制Content-Length所示值的大小的。 所以, 这个限制包体的配置很是有用处, 由于不用等Nginx接收完全部的HTTP包体——这有可能消耗很长时间——就能够告诉用户请求过大不被接受。 例如, 用户试图上传一个10GB的文件, Nginx在收完包头后, 发现Content-Length超过client_max_body_size定义的值, 就直接发送413("Request EntityToo Large")响应给客户端url

 

l  存储HTTP头部的内存buffer大小
语法: client_header_buffer_size size;
默认: client_header_buffer_size 1k;
配置块: httpserver
上面配置项定义了正常状况下Nginx接收用户请求中HTTP header部分(包括HTTP行和HTTP头部) 时分配的内存buffer大小。

 

 

l  proxy_connect_timeout

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

l  proxy_read_timeout

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

l  proxy_send_timeout

后端服务器数据回传时间_就是在规定时间以内后端服务器必须传完全部的数据

l  proxy_buffering

proxy_buffering 开启的时候,proxy_buffers proxy_busy_buffers_size 才会起做用,不管proxy_buffering 是否开启,proxy_buffer_size 都起做用。

l  proxy_buffer_size

proxy_buffer_size 用来接受后端服务器 response 的第一部分,小的response header 一般位于这部分响应内容里边。默认proxy_buffer_size 被设置成 proxy_buffers 里一个buffer 的大小,固然能够设置更小些。

① 若是 proxy_buffers 关闭

Nginx不会尝试获取到后端服务器全部响应数据以后才返回给客户端,Nginx 会尽快把数据传给客户端,在数据传完以前,Nginx 接收到的最大缓存大小不能超过 proxy_buffer_size

② 若是 proxy_buffers 打开

Nginx将会尽量的读取后端服务器的数据到buffer,直到proxy_buffers设置的全部buffer们被写满或者数据被读取完(EOF),此时Nginx开始向客户端传输数据,会同时传输这一整串buffer们。若是数据很大的话,Nginx会接收并把他们写入到temp_file里去,大小由proxy_max_temp_file_size 控制。「当数据没有彻底读完的时候」,Nginx同时向客户端传送的buffer 大小 不能超过 proxy_busy_buffers_size 「此句可能理解有误」。

 

l  proxy_busy_buffers_size:

当缓存后端服务器的配置被打开时,该项限定,当已经被sendresponse没有被彻底read,此时可用busy_buffers,size限定这个buffer的大小,固然须要的话,部分的response能够也能够写到temp_file里。

 

l  location
语法: location[=|~|~*|^~|@]/uri/{...}
配置块: server
location
会尝试根据用户请求中的URI来匹配上面的/uri表达式, 若是能够匹配, 就选择location{}块中的配置来处理用户请求。

 

nginx是经过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:

1alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;

2root指定的目录是location匹配访问的path目录的上一级目录,这个path目录必定要是真实存在root指定目录下的;

3)使用alias标签的目录块中不能使用rewritebreak(具体缘由不明);另外,alias指定的目录后面必需要加上"/"符号!!

4alias虚拟目录配置中,location匹配的path目录若是后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/"

    可是若是location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必需要加上"/",访问时它不会自动加上"/"。若是不加上"/",访问就会失败!

5root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。

 

举例:

location /huan/ {
      alias 
/home/www/huan/;
}

在上面alias虚拟目录配置下,访问http://www.wangshibo.com/huan/a.html实际指定的是/home/www/huan/a.html

注意:alias指定的目录后面必需要加上"/",即/home/www/huan/不能改为/home/www/huan

上面的配置也能够改为root目录配置,以下,这样nginx就会去/home/www/huan下寻找http://www.wangshibo.com/huan的访问资源,二者配置后的访问效果是同样的!
location 
/huan/ {
       root 
/home/www/;
}

 

这边不是很理解,大概是重定向/50x.htmlroot path下的页面吧,后来才知道,这样设置,应该去nginx下面的目录找html目录,果真找到了50x.html

 

 

l  嵌入其余配置文件
语法: include pathfile;
include
配置项能够将其余配置文件嵌入到当前的nginx.conf文件中, 它的参数既能够是绝对路径, 也能够是相对路径(相对于Nginx的配置目录, 即nginx.conf所在的目录) , 例如:
include mime.types;
include vhost/*.conf;
能够看到, 参数的值能够是一个明确的文件名, 也能够是含有通配符*的文件名, 同时能够一次嵌入多个配置文件。

l  allow

语法:allow address |CIDR|unix:|all:

默认值:None

区间:http,server,location,limit_except

容许一个ip或者ip段访问

 

l  deny

语法:deny address |CIDR|unix:|all:

默认值:None

区间:http,server,location,limit_except

禁止一个ip或者ip段访问

 

l  proxy_pass

这个指令设置被代理服务器的地址和被映射的URI

相关文章
相关标签/搜索