Nginx做为反向代理服务器时涉及的基本指令
1. 说明:
- on 表示开启
- off 表示关闭
2. 基本配置的21个指令
- proxy_pass
设置被代理的服务器地址,可以是主机名称、IP地址加端口号的形式.传输的协议通常是http、https、以’unix’开头的UNIX-domain套接字路径.如果被代理的是一组服务器的话,可以使用upstream指令配置后端服务器组. - proxy_hide_header
设置nginx服务器在发送HTTP响应时隐藏的一些头域信息,可以在http块、server块或者location块配置. - proxy_pass_header
默认情况下,Nginx服务器在发送响应报文时,报文中不包括”Date”、”Server”、”X-Accel”等来自被代理服务器的头域信息,该指令可以设置这些头域信息被发送,可以在http块、server块或者location块配置. - proxy_pass_request_body
配置是否将客户端发送的请求体发送给代理服务器,默认为on,可以在http块、server块或者location块配置. - proxy_pass_request_headers
配置是否将客户端发送的请求头发送给代理服务器,默认为on,可以在http块、server块或者location块配置. - proxy_set_header
该指令可以更改Nginx服务器接收到的客户端的请求头,然后将新的请求头发送给代理的服务器,默认情况下该指令设置为:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
- proxy_set_body
该指令可以更改Nginx服务器接收到的可以的请求体信息,然后将新的请求体的发送给被代理的服务器. - proxy_bind
在配置了多个基于域名或者基于IP的主机的情况下,该指令可以配置代理连接由指定的主机处理. - proxy_connect_timeout
配置Nginx服务器与后端代理服务器尝试建立连接的超时时间,默认为60s. - proxy_read_timeout
配置Nginx服务器向后端代理服务器发出(read)请求后,等待响应的超时时间,默认为60s. - proxy_write_timeout
配置Nginx服务器向后端代理服务器发出(write)请求后,等待响应的超时时间,默认为60s. - proxy_http_version
配置Nginx服务器提供代理的HTTP协议版本,默认设置为1.0,1.1版本支持upstream服务器组中设置keepalive指令. - proxy_method
配置Nginx服务器请求被代理服务器时使用的请求方法,一般为POST或者GET. - proxy_ignore_client_abort
蛇者用于在客户端中断网络请求时,Nginx服务器是否中断对被代理服务器的请求.默认为off,当中断客户端网络请求时,Nginx服务器中断对被代理服务器的请求. - proxy_ignore_headers
用于设置一些HTTP响应头中的头域,Nginx服务器接收到被代理服务器的响应数据后,不会处理这些被设置的头域. - proxy_redirect
用于修改被代理服务器返回的响应头中的Location头域和Refresh头域.语法结构为:
proxy_redirect redirect replacement;
proxy_redirect default;
proxy_redirect off;
- proxy_intercept_errors
配置当被代理的服务器返回的状态码大于或者等于300时是否直接把状态码发送给客户端,否则的话使用error_page指令处理.默认为off - proxy_headers_hash_max_size
配置存放HTTP报文头的哈希表的容量.默认为512个字节. - proxy_headers_hash_bucket_size
设置Nginx服务器存放HTTP报文头的哈希表容量的个数.默认为64. proxy_next_upstream
配置后端服务器哪些出现异常时请请求顺次交由下一个组内的服务器处理.proxy_next_upstream status;status为设置的服务器返回状态,可以是一个或多个,这些状态包括:
- error 在建立连接、向被代理的服务器发送请求活在读取响应时服务器发生连接错误.
- timeout 在建立连接、向被代理的服务器发送请求活在读取响应时服务器发生连接超时.
- invalid_header 被代理的服务器返回的响应头为空或者无效.
- http_500|http_502|http_503|http_504|http_404,被代理的服务器返回500 502 503 504 404状态码.
- off 无法将请求发送给被代理的服务器.
默认为error timeout
- proxy_ssl_session_reuse
配置是否使用基于SSL安全协议的会话连接被代理的服务器.默认为on.
3. Proxy Buffer相关配置的7个指令
Proxy Buffer启用以后,Nginx服务器会异步地将被代理服务器的响应传递给客户端.
Nginx服务器首先尽可能地从被代理服务器那里接受响应的数据,然后放置在Proxy Buffer中,Buffer的大小由proxy_buffer_size指令和proxy_buffers指令决定.如果在传递过程中,发现Buffer没有足够大小来接收一次响应数据,Nginx服务器会将部分接收到的数据临时存放在磁盘的临时文件中,磁盘上的临时文件路径可以通过proxy_temp_path指令进行设置,临时文件的大小由proxy_max_temp_file_size指令和proxy_temp_file_write_size指令决定.一次响应数据被接收完成或者Buffer已经装满后,Nginx服务器开始向客户端传输数据.
每个Proxy Buffer装满数据后,在从开始向客户端发送一直到Proxy Buffer中的数据全部传输给客户端的过程中,它都处于BUSY状态,期间对它其他操作都会失败.同时处于BUSY状态的Proxy Buffer总大小由proxy_busy_buffer_size指令限制,不能超过该指令设置的大小.
1. proxy_buffering
用于配置是否启用或者关闭Proxy Buffer.默认为on
2. proxy_buffers
用于配置接收一次被代理服务器响应数据的Proxy Buffer个数和每个Buffer的大小.
proxy_buffers number size;
size一般设置为内存页大小.根据平台的不同,取值可能为4KB或者8KB
默认为:
proxy_buffers 8 4KB|8KB;
3. proxy_buffer_size
用于配置从被代理服务器获取的第一部分响应数据的大小,默认为4k或者8k,保持与proxy_buffers指令中的size变量相同.
4. proxy_busy_buffers_size
用于限制同时处于BUSY状态的Proxy Buffer的总大小.
proxy_busy_buffers_size size;
size为设置处于BUSY状态的缓存区总大小.默认为8KB或者16KB.
5. proxy_temp_path
用于配置磁盘上的一个文件路径,用于临时存放被代理服务器的大体积响应数据.如果Proxy Buffer被装满后,响应数据仍然没有被Nginx服务器完全接收,之后响应的数据就会被临时存放在该文件中.语法结构为:
proxy_temp_path path [level1 [level2 [level3]]]
* path 磁盘上临时存放文件的路径
* levelN 缓存文件存放在设置的路径的第几级hash目录中
例子:
```
proxy_temp_path /spool/nginx/proxy_temp 1 2;
```
临时文件的路径可以是:
```
/spool/nginx/proxy_temp/7/45/00000123457
```
6. proxy_max_temp_file_size
用于设置所有临时文件的总大小.
proxy_max_temp_file_size size;
默认为:1024MB
7. proxy_temp_file_write_size
用于配置同时写入临时文件的数据量的总大小
proxy_temp_file_write_size size;
默认设置根据平台的不同,可以为8KB或者16KB,一般与平台的内存也大小相同.
4. Proxy Cache相关配置的12个指令
Proxy Cache机制依赖于Proxy Buffer机制,只有在Proxy Buffer机制开启的情况下,Proxy Cache的配置才发挥作用.
Nginx还提供了另外一种把被代理服务器响应数据缓存到本地的方法Proxy Store,与Proxy Cache的区别是,Proxy Store只是简单的缓存,不支持缓存的过期更新、内存索引重建等功能,但支持设置用户或用户组对缓存数据的访问权限.
- proxy_cache
用于配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据.这些数据在Nginx服务器启动时由缓存索引重建进程负责建立,在Nginx服务器的整个运行过程中由缓存管理进程负责定时检查过期数据、检索等管理工作.语法结构为:
proxy_cache zone | off;
- zone 设置用于存放缓存索引的内存区域的名称
- off 关闭proxy_cache功能,默认设置
proxy_cache_bypass
用于配置Nginx在响应客户端时不从缓存中获取数据的条件.语法结构为:proxy_cache_bypass string ...;其中,string为条件变量,支持配置多个,当至少有一个字符串指令不为空或者不等于0时,响应数据不从缓存中获取.
例子:
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment $http_pragma $http_authorization;- proxy_cache_key
用于配置Nginx服务器在内存中为缓存数据建立索引时使用的关键字.默认为:
proxy_cache_key $scheme$proxy_host$uri$is_args$args
- proxy_cache_lock
用于配置是否开启缓存的锁功能.在缓存中,某些数据项可以同时被多个请求返回的响应数据填充,开启该功能后,Nginx服务器同时只能有一个请求填充缓存中的某一数据项.如果其他请求也想填充该数据项,必须等待该数据项的锁被释放.这个等待的时间由proxy_cache_lock_timeout指令设置.
默认值为off,表示关闭锁功能. - proxy_cache_lock_timeout
用于配置开启锁功能以后锁的超时时间.默认为5s. - proxy_cache_in_uses
当客户端向被代理的服务器发送相同的请求达到该指令设定的次数后,Nginx服务器才对该其更年期的响应数据做缓存.默认为1 proxy_cache_path
用于设置Nginx服务器存储缓存数据的路径以及和缓存索引相关的内容,语法结构为:proxy_cache_path path [levels=levels] keys_zone=name:size1 [inactive=time1] [max_size=size2] [loader_files=number] [loader_sleep=time2] [loader_threshold=time3];- path 设置缓存存放的根路径
- levels 设置相对于path指定目录的第几级hash目录中缓存数据.levels=1,表示一级hash目录;levels=1:2,表示两极目录,以此类推.该目录是基于请求URL通过哈希算法得到的.
- name:size1 Nginx服务器的缓存索引重建进程在内存中为缓存数据建立索引,这一对变量用来设置存放缓存索引的内存区域的名称和大小.
- time1 设置强制更新缓存数据的时间,当缓存数据在设定的时间内没有被访问时,Nginx服务器就强制从硬盘上将其删除,下次客户端访问该数据时重新缓存.默认为10s.
- size2 设置缓存数据大小.当缓存的大小超过该变量的设置时,索引管理进程将根据最近最少被访问的策略删除缓存.
- number 设置缓存索引重建进程每次加载的数据元素的数量上限.默认为100
time2 设置缓存索引重建进程在一次遍历结束后下一次遍历开始之间暂停的时长,默认为50ms.
time3 设置遍历一次磁盘缓存源数据的时间上限.默认为200ms.
该指令比较复杂,一般需要设置前面3个指令的情形比较多,后面几个变量与Nginx服务器缓存索引重建进程以及管理进程性能有关,一般情况下保持默认设置就可以了.
例子:
proxy_cache_path /data/nginx/cache/a levels=1 keys_zone=a:10m; proxy_cache_path /data/nginx/cache/b levels=2:2 keys_zone=b:100m; proxy_cache_path /data/nginx/cache/c levels=1:1:2 keys_zone=c:1000m;==该指令只能放在http块中==
- proxy_cache_use_stale
指定在那种情况下,当被代理的服务器无法访问或者访问错误等现象时,Nginx服务器可以使用历史缓存响应客户端的请求.语法结构为:
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | off ...;
默认为off proxy_cache_valid
该指令可以针对不能的HTTP响应状态设置不同的缓存时间,语法结构为:proxy_cache_valid [code ...] time;- code 设置HTTP响应的状态码,可选,默认只为响应吗是200 301 302的响应数据做缓存.可以使用 ‘any’ 表示缓存所有该指令中未设定的其他响应数据
- time 缓存时间
例子:
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 10m;第三个例子表示对返回状态为不是200 301 302的响应数据缓存10分钟.
- proxy_no_cache
配置在什么情况下不使用cache功能.语法结构为:
proxy_no_cache string ...;
其中,string可以是一个或者多个变量,当string的值不为空或者不为’0’时,不启用cache功能. - proxy_store
配置是否在本地磁盘缓存来自被代理服务器的响应数据.语法结构为:
proxy_store on | off | string;
- on | off 设置是否开启Proxy Store功能.如果开启,缓存文件会存放到alias指令或root指令设置的本地路径.默认为off
- string 自定义缓存文件存放路径.使用该配置时,默认开启Proxy Store.
proxy_store_access
用于设置用户或用户组对Proxy Store缓存文件的访问权限,语法结构为:proxy_store_access users:permissions ...;- users 可以设置为user、group或者all
- permission 设置方位权限
例子:
proxy_store on; proxy_store_access user:rw group:rw all:r; root /data/www;
本文介绍Nginx作为反向代理服务器时的基本配置指令,涵盖了代理服务器地址设置、HTTP响应头处理、缓存机制等多个方面,适用于Nginx初学者及进阶用户。
1615

被折叠的 条评论
为什么被折叠?



