阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

nginx 代理服务指令详解

211次阅读
没有评论

共计 8012 个字符,预计需要花费 21 分钟才能阅读完成。

nginx 正向代理与反向代理说明图

nginx 代理服务指令详解

超级形象说明

正向代理指令:

1, resolver

这个用于 DNS 服务器的 ip . DNS 服务器的主要工作是进行域名解析, 将域名映射为对应 IP 地址

resolver address …  [valid = time]

address ,   DNS 服务器的 ip 地址, 不指定的话默认 53

time 设置数据包在网络中的有效时间.

例: resolver 127.0.0.1 [::1]:52113 valids

2, resolver_timeout 

设置 DNS 服务器域名解析超时时间

语法结构: resolver_timeout  time;

3, proxy_pass

设置代理服务器的协议和地址, 可以用于反向代理服务

proxy_pass URL

URL  为设置的代理服务器协议和地址

反向代理基本指令

1,  proxy_pass

设置代理服务器的协议和地址

proxy_pass URL

URL  为设置的代理服务器协议和地址

使用这个指令时要注意:

如果指令 URL 中变量不含有 URI 转向地址会只改变 URL

如果指令 URL 中变量含有 URI 转向地址会全部改变

如果配置指令 url 后面带有 / 那么跳转同理

2, proxy_hide_header 指令

用于设置 Nginx 服务器发送 http 相应时, 隐藏一些头域信息

proxy_hide_header field;

field 为需要隐藏的头域. 可以用于 http  server  localtion

3,proxy_pass_header 指令

默认 Nginx 服务器在发送响应报文时, 报文不包含 date server X-accel 等来自被代理服务器的头域信息,

该指令可以设置这些头域信息已被发送

proxy_pass_header filed;

field 为需要隐藏的头域. 可以用于 http  server  localtion

4, proxy_pass_request_body

配置是否将客户端请求体发送给代理服务器

proxy_pass_request_body on | off  可以用于 http  server  localtion

5,proxy_pass_request_header 

配置是否将客户端的请求头发送给代理服务器

proxy_pass_request_header 可以用于 http  server  localtion

6, proxy_set_header

用于更改 Nginx 服务器接收到的客户端请求的请求头, 然后将新的请求头发送给被代理服务器

proxy_set_header filed value

field 要更改的信息所在的头域

value  更改的值

7, proxy_set_body

更改 Nginx 服务器接收到的客户端请求的请求体信息, 然后将新的请求体发送给被代理的服务器

proxy_set_body value 

value 为更改的信息

8, proxy_bind 

强制将与代理主机的连接绑定到指定的 ip 主机

proxy_bind address 

address 为 IP 地址

9, proxy_connect_timout

用于配置 Nginx 服务器与后端被代理服务器尝试连接的超时时间

proxy_connect_timout time 默认时间时 60 秒

10, proxy_read_timeout

用于配置 Nginx 服务器向后端被代理服务器 (组) 发出 read 请求后, 等待响应的超时时间

proxy_read_timeout time; 默认时间时 60 秒

11, proxy_send_timeout

   用于配置 Nginx 服务器向后端被代理服务器 (组) 发出 write 请求后, 等待响应的超时时间

proxy_send_timeout time;默认时间时 60 秒

12, proxy_http_version

用于设置 Nginx 服务器提供代理服务器的 HTTP 协议版本

proxy_http_version 1.0 | 1.1 |2.0

13, proxy_method

用于设置 Nginx 服务器请求贝代理服务器使用的请求方法, 设置了这个客户端的请求方法将会被忽略

proxy_method method

method 设置 POST | GET

 14 proxy_ignore_client_abort

用于设置在客户端中断网络请求的时候,Nginx 服务器是否中断对被代理服务器的请求,

proxy_ignore_client_abort on | off 

15, proxy_ignore_headers

用于设置一些 HTTP 相应头的头域,

proxy_ignore_headers filed … 

filed 为要设置的 HTTP 相应头的头域信息, 例如 ”X-Accel-Redirect” “X-Accel-Expires” “Expores ”  “Cache-Control ” “Set-Cookie”

16, proxy_redirect

用于修改被代理服务器返回的相应头中的 location 和 Refresh 与 proxy_pass 指令配合使用

语法结构:

proxy_redirect   redirect replacement

proxy_redirect   default

proxy_redirect off

redirect  匹配 localtion 头域值的字符串

 replacement 用于替换 redirect 变量的字符串

假设前端 url 是 example.com。后端 server 域名是 csdn123.com,那么后端 server 在返回 refresh 或 location 的时候,host 为 csdn123.com,显然这个信息直接返回给客户端是不行的,需要 nginx 做转换,这时可以设置:

proxy_redirect http://csdn123.com

nginx 会将 host 及 port 部分替换成自身的 server_name 及 listen port。不过这种配置对 server_name 有多个值的情况下支持不好。
我们可以用 nginx 内部变量来解决这一问题:

proxy_redirect http://csdn123.com http://$host:$server_port

17, proxy_intercept_errors

配置一个状态的开启或者关闭

proxy_intercept_errors on | off

18, proxy_headers_hash_max_size

存放 HTTP 报文头的哈希表的容量

proxy_headers_hash_max_size size; 默认大小 512

19, proxy_headers_hash_bucket_size

Nginx 服务器申请存放 HTTP 报文头的哈希表容量的单位大小

proxy_headers_hash_max_size 64;

20, proxy_next_upstream

如果 Nginx 定义了 upstream 后端服务器组,如果组内有异常情况,将请求顺次交给下一个组内服务器处理

proxy_next_upstream status...

status: error,timeout,invalid_header,http_500 502 503 504 404,off

21, proxy_ssl_session_reuse

该指令用于配置是否使用基于 SSL 安全协议的会话连接(htts://)被代理服务器,

proxy_ssl_session_reuse on | off; 默认 on

 

Proxy Buffer 指令详解:

22, proxy_buffering

用于配置是否启用或者关闭 proxybuff

proxy_buffering on | off

�� 23, proxy_buffers

用于配置接收一次被代理服务器响应数据的 Proxy Buffer 个数和每个 Buffer 的大小.

proxy_buffers number size;

size 一般设置为内存页大小. 根据平台的不同, 取值可能为 4KB 或者 8KB

proxy_buffers 8 4KB|8KB;

24,  proxy_buffer_size

用于配置从被代理服务器获取的第一部分响应数据的大小, 默认为 4k 或者 8k, 保持与 proxy_buffers 指令中的 size 变量相同.

25. proxy_busy_buffers_size

用于限制同时处于 BUSY 状态的 Proxy Buffer 的总大小.

proxy_busy_buffers_size size;

size 为设置处于 BUSY 状态的缓存区总大小. 默认为 8KB 或者 16KB.
26.      proxy_temp_path

用于配置磁盘上的一个文件路径, 用于临时存放被代理服务器的大体积响应数据. 如果 Proxy Buffer 被装满后, 响应数据仍然没有被 Nginx 服务器完全接收, 之后响应的数据就会被临时存放在该文件中. 语法结构为:

proxy_temp_path path [level1 [level2 [level3]]]

* path 磁盘上临时存放文件的路径
* levelN 缓存文件存放在设置的路径的第几级 hash 目录中

27. proxy_max_temp_file_size

用于设置所有临时文件的总大小.

proxy_max_temp_file_size size;

默认为:1024MB
28. proxy_temp_file_write_size

用于配置同时写入临时文件的数据量的总大小

proxy_temp_file_write_size size;

默认设置根据平台的不同, 可以为 8KB 或者 16KB, 一般与平台的内存也大小相同.

 

Proxy Cache  配置指令

29, proxy_cache

        用于配置一块公用的内存区域的名称, 该区域可以存放缓存的索引数据. 这些数据在 Nginx 服务器启动时由缓存索引重建进程负责建立, 在 Nginx 服务器的整个运行过程中由缓存管理进程负责定时检查过期数据、检索等管理工作. 语法结构为:

   proxy_cache zone | off;

            zone 设置用于存放缓存索引的内存区域的名称
            off 关闭 proxy_cache 功能, 默认设置

  30,  proxy_cache_bypass

       用于配置 Nginx 在响应客户端时不从缓存中获取数据的条件. 语法结构为:

       proxy_cache_bypass string …;

       其中,string 为条件变量, 支持配置多个, 当至少有一个字符串指令不为空或者不等于 0 时, 响应数据不从缓存中获取.

   例子:

       proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment $http_pragma $http_authorization;

  31, proxy_cache_key

       用于配置 Nginx 服务器在内存中为缓存数据建立索引时使用的关键字. 默认为:

       proxy_cache_key $scheme$proxy_host$uri$is_args$args
  proxy_cache_lock
       
      用于配置是否开启缓存的锁功能. 在缓存中, 某些数据项可以同时被多个请求返回的响应数据填充, 开启该功能后,Nginx 服务器同时只能有一个请求填充缓存中的某一数据项. 如果其他请求也想填充该数据项, 必须等待该数据项的锁被释放. 这个等待的时间由 proxy_cache_lock_timeout 指令设置.
       默认值为 off, 表示关闭锁功能.
  32 ,       proxy_cache_lock_timeout

        用于配置开启锁功能以后锁的超时时间. 默认为 5s.
  33,   proxy_cache_in_uses

        当客户端向被代理的服务器发送相同的请求达到该指令设定的次数后,Nginx 服务器才对该其更年期的响应数据做缓存. 默认为 1

  34,  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 块中 ==
  35  proxy_cache_use_stale

       指定在那种情况下, 当被代理的服务器无法访问或者访问错误等现象时,Nginx 服务器可以使用历史缓存响应客户端的请求. 语法结构为:

       proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | off …;

        默认为 off

  36,  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 分钟.
37 proxy_no_cache
   
配置在什么情况下不使用 cache 功能. 语法结构为:

    proxy_no_cache string …;

其中,string 可以是一个或者多个变量, 当 string 的值不为空或者不为’0’时, 不启用 cache 功能.
38     proxy_store

  配置是否在本地磁盘缓存来自被代理服务器的响应数据. 语法结构为:

39           proxy_store on | off | string;

    on | off 设置是否开启 Proxy Store 功能. 如果开启, 缓存文件会存放到 alias 指令或 root 指令设置的本地路径. 默认为 off
    string 自定义缓存文件存放路径. 使用该配置时, 默认开启 Proxy Store.

40 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;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8012字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中