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_redirecthttp://csdn123.com

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

        proxy_redirecthttp://csdn123.comhttp://$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_size64;

     20,proxy_next_upstream

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

        proxy_next_upstreamstatus...

        status:error,timeout,invalid_header,http_500502503504404,off

     21,proxy_ssl_session_reuse

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

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

优质内容筛选与推荐>>
1、第1章 Linux命令行简介
2、Egret 按钮点击缩放效果
3、PLSQL 11注册码
4、java 之webmagic 网络爬虫
5、135. Candy


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn