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

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

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

l  选择事件模型
语法:
use[kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];
默认:
Nginx会自动使用最适合的事件模型。
对于Linux操作系统来说, 可供选择的事件驱动模型有poll、 select、 epoll三种。 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;
配置块:
http、 server、 location
浏览器在发送含有较大HTTP包体的请求时, 其头部会有一个Content-Length字段,client_max_body_size是用来限制Content-Length所示值的大小的。 因此, 这个限制包体的配置非常有用处,
因为不用等Nginx接收完所有的HTTP包体——这有可能消耗很长时间——就可以告诉用户请求过大不被接受。 例如, 用户试图上传一个10GB的文件, Nginx在收完包头后, 发现Content-Length超过client_max_body_size定义的值, 就直接发送413("Request EntityToo Large")响应给客户端

l  存储HTTP头部的内存buffer大小
语法:
client_header_buffer_size size;
默认:
client_header_buffer_size 1k;
配置块:
http、 server
上面配置项定义了正常情况下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:

当缓存后端服务器的配置被打开时,该项限定,当已经被send的response没有被完全read,此时可用busy_buffers,而size限定这个buffer的大小,当然需要的话,部分的response可以也可以写到temp_file里。

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

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

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

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

3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!

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

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

5)root目录配置中,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.html到root 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

Nginx配置反向代理服务器的更多相关文章

  1. apache 配置反向代理服务器

    前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...

  2. 配置Nginx作为反向代理服务器

    最近在实习公司的开发一个项目,项目是前后端彻底分离的项目,前端项目和后端项目各监听着特定的端口号,显然不是80的通用端口,为了不在地址栏上输入IP+端口号的形式,我们可以使用Nginx作为反向代理服务 ...

  3. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  4. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  5. 【翻译】使用nginx作为反向代理服务器,uWSGI作为应用服务器来部署flask应用

    最近在看关于Docker和Nginx方面的内容,先于在Docker上开发以及部署python应用自然要先能够在本机上部署,其中找到一篇文章写的最为详细并且实验成功,所以在此翻译转载过来以备后需.[原文 ...

  6. Nginx搭建反向代理服务器

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器   一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...

  7. Nginx 搭建反向代理服务器过程详解

    1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...

  8. Nginx作为反向代理服务器

    前言:Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream ...

  9. 【转】Nginx搭建反向代理服务器过程详解

    阅读目录 1.1 反向代理初印象 1.2 反向代理的作用 2.1 Nginx是神马? 2.2 Nginx的应用现状 2.3 Nginx的核心特点 3.1 准备一个ASP.NET网站部署到IIS服务器集 ...

随机推荐

  1. HanLP vs LTP 分词功能测试

    文章摘自github,本次测试选用 HanLP 1.6.0 , LTP 3.4.0 测试思路 使用同一份语料训练两个分词库,同一份测试数据测试两个分词库的性能. 语料库选取1998年01月的人民日报语 ...

  2. SqlServer :实现树形结构递归查询(无限极分类)

    SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE仅被定义一 ...

  3. SparkStream:4)foreachRDD详解

    转载自:http://blog.csdn.net/jiangpeng59/article/details/53318761 foreachRDD通常用来把SparkStream运行得到的结果保存到外部 ...

  4. H5外包团队 android视频压缩,使用ffmpeg方案

    android视频压缩,使用ffmpeg方案,集成fdk-aac与264编码,适用于32位系统与64位系统,支持ARM 32/64 cpu与x86 32/64 cpu,mips 32/64 cpu,即 ...

  5. FPGA调试技巧

    FPGA调试技巧 八月,一直在debug, 编译,查信号,几乎没机会,也没心思停留下来看点东西,静心思考,做点笔记.今天,在硬盘上翻到了保存已久,但一直没想起来读的一本手册.这是我初入职场,决定从硬件 ...

  6. 深入理解C#的装箱和拆箱(转)

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了 ...

  7. C# .NET XML 序列化为对象,反序列化

    如果遇到:   根级别上的数据无效. 行 1,位置 1   .:即无法反序列化(反序列失败),得到对象为null ,把 xml 文本 Trim一下. xml=xml.Trim(); 序列化完毕你可以看 ...

  8. PAT 甲级 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  9. 报错:Flink Could not resolve substitution to a value: ${akka.stream.materializer}

    报错现象: Exception in thread "main" com.typesafe.config.ConfigException$UnresolvedSubstitutio ...

  10. Java BASE58 以及 md5,sha256,sha1

    package cn.ubibi.wsblog.utils; import java.io.UnsupportedEncodingException; import java.math.BigInte ...