ngx_http_geo_module

ngx_http_geo_module模块使用取决于客户端IP地址的值创建变量。

语法:geo [$address] $variable { ... }

默认值:无

应用位置:http

作用:定义从指定的变量获取客户端的IP地址。默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量获得。

案例:

geo $geo {
    default        0;

    127.0.0.1      2;
    192.168.1.0/24 1;
    10.1.0.0/16    1;
}
http {
	geo $arg_boy $ttlsa_com {
        default 0;
        127.0.0.1 1;
        8.8.8.8 2;
}
	server {
        listen       8080;
        server_name  www.test.com;
 
        location /hello {
			default_type text/plain;
			echo $ttlsa_com;  # 必须编译 nginx echo 模块
			echo $arg_boy;
		}
	}
}
# curl 127.0.0.1:8080/hello?boy=8.8.8.8  
2
8.8.8.8

ngx_http_geoip_module

安装:

模块默认没有安装,如需安装请执行以下命令:

yum install nginx-module-geoip.x86_64  -y

配置案例:

http {
    geoip_country         GeoIP.dat;
    geoip_city            GeoLiteCity.dat;
    geoip_proxy           192.168.100.0/24;
    geoip_proxy_recursive on;
    ...

参数详解:

geoip_country

  语法:geoip_country file;

  默认值:无

  应用位置:http

根据客户端IP地址,指定用于确定国家/地区的数据库。 使用此数据库时,以下变量可用:

$geoip_country_code
    two-letter country code, for example, “RU”, “US”. 
$geoip_country_code3
    three-letter country code, for example, “RUS”, “USA”. 
$geoip_country_name
    country name, for example, “Russian Federation”, “United States”.

geoip_city

  语法:geoip_city file;

  默认值:无

  应用位置:http

指定用于根据客户端IP地址确定国家,地区和城市的数据库。 使用此数据库时,以下变量可用:

$geoip_area_code
    telephone area code (US only). 
 $geoip_city_continent_code
    two-letter continent code, for example, “EU”, “NA”. 
$geoip_city_country_code
    two-letter country code, for example, “RU”, “US”. 
$geoip_city_country_code3
    three-letter country code, for example, “RUS”, “USA”. 
$geoip_city_country_name
    country name, for example, “Russian Federation”, “United States”. 
$geoip_dma_code
    DMA region code in US (also known as “metro code”), according to the geotargeting in Google AdWords API. 
$geoip_latitude
    latitude.
$geoip_longitude
    longitude.
$geoip_region
    two-symbol country region code (region, territory, state, province, federal land and the like), for example, “48”, “DC”. 
$geoip_region_name
    country region name (region, territory, state, province, federal land and the like), for example, “Moscow City”, “District of Columbia”. 
$geoip_city
    city name, for example, “Moscow”, “Washington”. 
$geoip_postal_code
    postal code.

ngx_http_limit_conn_module

模块用于限制每个定义的键的连接数,特别是每个IP的连接数,对于每个http请求,只有当请求的header被完全读取的时候,才被计算作1个链接数。

参数详解:

limit_conn

   语法:limit_conn zone number;

   默认值:无

   应用位置:http, server, location

设置共享内存区域和给定键值的最大允许连接数。 超过此限制时,服务器将返回错误以回复请求

limit_conn_zone

   语法:limit_conn_zone key zone=name:size;

   默认值:无

   应用位置:http

设置共享内存区域的参数,该区域将保留各种键的状态。 特别是,状态包括当前的连接数。 密钥可以包含文本,变量及其组合。 具有空键值的请求不计算在内。

limit_conn_status

   语法:limit_conn_status code;

   默认值:limit_conn_status 503;

   应用位置:http, server, location

设置响应拒绝的请求而返回的状态代码。

综合案例:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_conn perip 10;
    limit_conn perserver 100;
}

ngx_http_limit_req_module

ngx_http_limit_req_module 模块用于限制对每个定义键的请求处理速率,例如,单客户端IP的每秒请求数。实现的原理是使用“漏桶”原理。

指令详解:

limit_req

   语法:limit_req zone=name [burst=number] [nodelay]

   默认值:无

   应用位置:http, server, location

设置共享内存区域和请求的最大突发大小。 如果请求速率超过为区域配置的速率,则延迟其处理,以便以定义的速率处理请求。 过多的请求被延迟,直到它们的数量超过最大突发大小,在这种情况下请求以错误终止。 默认情况下,最大突发大小等于零。

limit_req_zone

   语法:limit_req_zone key zone=name:size rate=rate [sync];

   默认值:无

   应用位置:http

设置共享内存区域的参数,该区域将保留各种键的状态。 特别是,状态存储当前的过多请求数。 密钥可以包含文本,变量及其组合。 具有空键值的请求不计算在内。

limit_req_status

   语法:limit_req_status code;

   默认值:无

   应用位置:http, server, location

设置响应拒绝的请求而返回的状态代码。

案例:

limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

server {
    ...
    limit_req zone=perip burst=5 nodelay; 
    # 1 秒一次,最大延迟请求数量不大于5. 超过五次的返回错误码。 添加 nodelay,不会使用延迟请求数,直接返回错误码.
    limit_req zone=perserver burst=10;
}

ngx_http_log_module

ngx_http_log_module模块以指定的格式写入请求日志.

指令详解:

access_log

   语法:access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];    access_log off;

   默认值:access_log logs/access.log combined;

   应用位置:http, server, location, if in location, limit_except

设置缓冲日志写入的路径,格式和配置。 可以在同一级别指定多个日志。 可以通过在第一个参数中指定“syslog:”前缀来配置记录到syslog。 特殊值off取消当前级别的所有access_log指令。 如果未指定格式,则使用预定义的“组合”格式。

log_format

   语法:log_format name [escape=default|json|none] string ...;

   默认值:log_format combined "...";

   应用位置:http

   作用:指定日志格式

   日志格式包含的变量:

$bytes_sent
    the number of bytes sent to a client 
$connection
    connection serial number 
$connection_requests
    the current number of requests made through a connection (1.1.18) 
$msec
    time in seconds with a milliseconds resolution at the time of the log write 
$pipe
    “p” if request was pipelined, “.” otherwise 
$request_length
    request length (including request line, header, and request body) 
$request_time
    request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 
$status
    response status 
$time_iso8601
    local time in the ISO 8601 standard format 
$time_local
    local time in the Common Log Format 

# 配置案例
log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

open_log_file_cache

   语法:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];    open_log_file_cache off;

   默认值:open_log_file_cache off;

   应用位置:http, server, location

定义一个缓存,用于存储名称中包含变量的常用日志的文件描述符。

   常用参数:

max
    sets the maximum number of descriptors in a cache; if the cache becomes full the least recently used (LRU) descriptors are closed 
    设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。
inactive
    sets the time after which the cached descriptor is closed if there were no access during this time; by default, 10 seconds 
    设置存活时间,默认是10s
min_uses
    sets the minimum number of file uses during the time defined by the inactive parameter to let the descriptor stay open in a cache; by default, 1 
    设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次
valid
    sets the time after which it should be checked that the file still exists with the same name; by default, 60 seconds 
    设置检查频率,默认60s
off
    disables caching 
# 配置案例
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

ngx_http_map_module

ngx_http_map_module模块创建的变量的值取决于其他变量的值。更多...

ngx_http_map_module模块可以创建变量,这些变量的值与另外的变量值相关联。允许分类或者同时映射多个值到多个不同值并储存到一个变量中,map指令用来创建变量,但是仅在变量被接受的时候执行视图映射操作,对于处理没有引用变量的请求时,这个模块并没有性能上的缺失。

指令详解:

map

  语法:map string $variable { ... }

  默认值:无

  应用位置:http

  作用:map为一个变量设置的映射表。映射表由两列组成,匹配模式和对应的值。
            在 map 块里的参数指定了源变量值和结果值的对应关系。
            匹配模式可以是一个简单的字符串或者正则表达式,使用正则表达式要用('~')。
            一个正则表达式如果以 “~” 开头,表示这个正则表达式对大小写敏感。以 “~*”开头,表示这个正则表达式对大小写不敏感。

  配置案例:

map $http_user_agent $agent {
        default "";
        ~curl curl;
        ~*apachebench" ab;
}

map_hash_bucket_size

  语法:map_hash_bucket_size size;

  默认值:map_hash_bucket_size 32|64|128;

  应用位置:http

设置映射变量在哈希表的存储区大小。 默认值取决于处理器的缓存行大小。

map_hash_max_size

   语法:map_hash_max_size size;

   默认值:map_hash_max_size 2048;

   应用位置:http

设置映射变量哈希表的最大大小。 设置哈希表的详细信息在单独的文档中提供。

ngx_http_mirror_module

ngx_http_mirror_module模块(1.13.4)通过创建后台镜像子请求来实现原始请求的镜像。 忽略对镜像子请求的响应。

指令详解:

mirror

   语法:mirror uri | off;

   默认值:mirror off;

   应用位置:http, server, location

设置将镜像原始请求的URI。 可以在同一级别指定多个镜像。

mirror_request_body

   语法:mirror_request_body on | off;

   默认值:mirror_request_body on;

   应用位置:http, server, location

指示是否镜像客户端请求正文。 启用后,将在创建镜像子请求之前读取客户端请求正文。 在这种情况下,将禁用由proxy_request_buffering,fastcgi_request_buffering,scgi_request_buffering和uwsgi_request_buffering指令设置的无缓冲客户机请求正文代理。

配置案例:

location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location = /mirror {
    internal; # 内部调用,外部无法调用.
    proxy_pass http://test_backend$request_uri;
}

ngx_http_proxy_module

ngx_http_proxy_module模块允许将请求传递到另一台服务器。

指令详解:

proxy_buffer_size

   语法:proxy_buffer_size size;

   默认值:proxy_buffer_size 4k|8k;

   应用位置:http, server, location

设置用于读取从代理服务器接收的响应的第一部分的缓冲区的大小。 这部分通常包含一个小的响应头。 默认情况下,缓冲区大小等于一个内存页面。 这是4K或8K,具体取决于平台。 然而,它可以做得更小。

proxy_buffering

   语法:proxy_buffering on | off;

   默认值:proxy_buffering on;

   应用位置:http, server, location

启用或禁用来自代理服务器的响应缓冲。

proxy_buffers

   语法:proxy_buffers number size;

   默认值:proxy_buffers 8 4k|8k;

   应用位置:http, server, location

设置用于从代理服务器读取响应的缓冲区的数量和大小,用于单个连接。 默认情况下,缓冲区大小等于一个内存页面。 这是4K或8K,具体取决于平台。

proxy_busy_buffers_size

   语法:proxy_busy_buffers_size size;

   默认值:proxy_busy_buffers_size 8k|16k;

   应用位置:http, server, location

proxy_buffer_size 的两倍.

proxy_cache

   语法:proxy_cache zone | off;

   默认值:proxy_cache off;

   应用位置:http, server, location

定义用于缓存的共享内存区域。 可以在多个地方使用相同的区域。 参数值可以包含变量(1.7.9)。 off参数禁用从先前配置级别继承的高速缓存。

proxy_cache_bypass

   语法:proxy_cache_bypass string ...;

   默认值:无

   应用位置:http, server, location

定义不从缓存中获取响应的条件。 如果字符串参数的至少一个值不为空且不等于“0”,则不会从缓存中获取响应。

   案例:

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

proxy_cache_key

   语法:proxy_cache_key string;

   默认值:proxy_cache_key $scheme$proxy_host$request_uri;

   应用位置:http, server, location

   作用: 定义缓存的键.

proxy_cache_lock

   语法:proxy_cache_lock on | off;

   默认值:proxy_cache_lock off;

   应用位置:http, server, location

当启用时,一次只允许一个请求通过向代理服务器传递请求来填充根据proxy_cache_key指令标识的新缓存元素。同一缓存元素的其他请求要么等待响应出现在缓存中,要么等待释放该元素的缓存锁,直到proxy_cache_lock_timeout指令设置的时间。

proxy_cache_lock_age

   语法:proxy_cache_lock_age time;

   默认值:proxy_cache_lock_age 5s;

   应用位置:http, server, location

如果传递给代理服务器以填充新缓存元素的最后一个请求在指定时间内没有完成,则可以将另一个请求传递给代理服务器。

proxy_cache_lock_timeout

   语法:proxy_cache_lock_timeout time;

   默认值:proxy_cache_lock_timeout 5s;

   应用位置:http, server, location

设置proxy_cache_lock的超时。 当时间到期时,请求将被传递给代理服务器,但是,响应将不会被缓存。

proxy_cache_methods

   语法:proxy_cache_methods GET | HEAD | POST

   默认值:proxy_cache_methods GET HEAD;

   应用位置:http, server, location

如果此指令中列出了客户端请求方法,则将缓存响应。

proxy_cache_min_uses

   语法:proxy_cache_min_uses number;

   默认值:proxy_cache_min_uses 1;

   应用位置:http, server, location

   作用:该指令指定在一个响应被缓存之前最少的请求数。

proxy_cache_path

   语法:proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

   默认值:无

   应用位置:http

设置缓存的路径和其他参数。 缓存数据存储在文件中。 缓存中的文件名是将MD5功能应用于缓存键的结果。 levels参数定义高速缓存的层次结构。

   案例:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

 proxy_cache_purge

   语法:proxy_cache_purge string ...;

   默认值:无

   应用位置:http, server, location

定义将请求视为缓存清除请求的条件。 如果字符串参数的至少一个值不为空并且不等于“0”,则移除具有相应高速缓存键的高速缓存条目。 通过返回204(无内容)响应来指示成功操作的结果。

   案例:

proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
    PURGE   1;
    default 0;
}

server {
    ...
    location / {
        proxy_pass http://backend;
        proxy_cache cache_zone;
        proxy_cache_key $uri;
        proxy_cache_purge $purge_method;
    }
}

proxy_cache_use_stale

    语法:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off

    默认值:proxy_cache_use_stale off;

    应用位置:http, server, location

确定在与代理服务器通信期间可以在哪些情况下使用过时的缓存响应。 该指令的参数与proxy_next_upstream指令的参数匹配。
               如果无法选择代理服务器来处理请求,则error参数还允许使用过时的缓存响应。
proxy_cache_valid

    语法:proxy_cache_valid [code ...] time;

    默认值:无

    应用位置:http, server, location

设置不同响应代码的缓存时间。

    案例:

proxy_cache_valid 200 302 10m; # 10m 代表缓存保存的时间.
proxy_cache_valid 404      1m;

proxy_connect_timeout

    语法:proxy_connect_timeout time;

    默认值:proxy_connect_timeout 60s;

    应用位置:http, server, location

定义与代理服务器建立连接的超时。 应该注意,此超时通常不会超过75秒。

proxy_http_version

    语法:proxy_http_version 1.0 | 1.1;

    默认值:proxy_http_version 1.0;

    应用位置:http, server, location

设置代理的HTTP协议版本。 默认情况下,使用版本1.0。 建议将1.1版与keepalive连接和NTLM身份验证配合使用。

proxy_ignore_client_abort

    语法:proxy_ignore_client_abort on | off;

    默认值:proxy_ignore_client_abort off;

    应用位置:http, server, location

    作用:确定当客户端不等待响应而关闭连接时,是否应该关闭与FastCGI服务器的连接。如果设置为 on,客户端放弃连接后,nginx 将不会放弃同 Proxy 服务器的连接。

proxy_intercept_errors

    语法:proxy_intercept_errors on | off;

    默认值:proxy_intercept_errors off;

    应用位置:http, server, location

    作用:如果启用该指令,nginx 将会显示 error_page 指令配置信息,而不是直接来自 Proxy 服务器的响应

proxy_max_temp_file_size

    语法:proxy_max_temp_file_size size;

    默认值:proxy_max_temp_file_size 1024m;

    应用位置:http, server, location

当启用来自代理服务器的响应缓冲,并且整个响应不适合proxy_buffer_size和proxy_buffers指令设置的缓冲区时,响应的一部分可以保存到临时文件中。 该指令设置临时文件的最大大小。 一次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。
proxy_method

    语法:proxy_method method;

    默认值:无

    应用位置:http, server, location

指定在转发到代理服务器的请求中使用的HTTP方法,而不是客户端请求中的方法。 参数值可以包含变量(1.11.6)。

proxy_next_upstream

    语法:proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off

    默认值:proxy_next_upstream error timeout;

    应用位置:http, server, location

指定应将请求传递到下一个服务器的条件。

error
    an error occurred while establishing a connection with the server, passing a request to it, or reading the response header;
timeout
    a timeout has occurred while establishing a connection with the server, passing a request to it, or reading the response header;
invalid_header
    a server returned an empty or invalid response;
http_500
    a server returned a response with the code 500;
http_502
    a server returned a response with the code 502;
http_503
    a server returned a response with the code 503;
http_504
    a server returned a response with the code 504;
http_403
    a server returned a response with the code 403;
http_404
    a server returned a response with the code 404;
http_429
    a server returned a response with the code 429 (1.11.13);

proxy_next_upstream_timeout

   语法:proxy_next_upstream_timeout time;

   默认值:proxy_next_upstream_timeout 0;

   应用位置:http, server, location

限制请求可以传递到下一个服务器的时间。 0值关闭此限制。

proxy_next_upstream_tries

   语法:proxy_next_upstream_tries number;

   默认值:proxy_next_upstream_tries 0;

   应用位置:http, server, location

限制将请求传递到下一个服务器的可能尝试次数。 0值关闭此限制。

proxy_no_cache

   语法:proxy_no_cache string ...;

   默认值:无

   应用位置:http, server, location

定义不将响应保存到缓存的条件。 如果字符串参数的至少一个值不为空且不等于“0”,则不会保存响应。

   案例:

proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma    $http_authorization;

proxy_pass

   语法:proxy_pass URL;

   默认值:无

   应用位置:location, if in location, limit_except

设置代理服务器的协议和地址,以及应该映射位置的可选URI。作为协议,可以指定“http”或“https”。地址可以指定为一个域名或IP地址,以及一个可选端口。

   案例:

proxy_pass http://localhost:8000/uri/;

location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}

location /some/path/ {
    proxy_pass http://127.0.0.1;
}

location /name/ {
    rewrite    /name/([^/]+) /users?name=$1 break;
    proxy_pass http://127.0.0.1;
}

location /name/ {
    proxy_pass http://127.0.0.1$request_uri;
}

proxy_pass_request_body

   语法:proxy_pass_request_body on | off;

   默认值:proxy_pass_request_body on;

   应用位置:http, server, location

指示是否将原始请求正文传递给代理服务器。(我的理解是通过代理服务器)

location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";

    proxy_pass ...
}

proxy_pass_request_headers

   语法:proxy_pass_request_headers on | off;

   默认值:proxy_pass_request_headers on;

   应用位置:http, server, location

指示是否将原始请求的标头字段传递给代理服务器。

   案例:

location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_headers off;
    proxy_pass_request_body off;

    proxy_pass ...
}

proxy_read_timeout

   语法:proxy_read_timeout time;

   默认值:proxy_read_timeout 60s;

   应用位置:http, server, location

定义从代理服务器读取响应的超时。 仅在两个连续的读操作之间设置超时,而不是为整个响应的传输。 如果代理服务器在此时间内未传输任何内容,则关闭连接。

proxy_redirect

   语法:proxy_redirect default;    proxy_redirect off;    proxy_redirect redirect replacement;

   默认值:proxy_redirect default;

   应用位置:http, server, location

如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。 默认即可,更多

   案例:

location /one/ {
      proxy_pass     http://upstream:port/two/;
      proxy_redirect default;

 location /one/ {
      proxy_pass     http://upstream:port/two/;
      proxy_redirect http://upstream:port/two/ /one/;

proxy_redirect http://localhost:8000/ http://$host:$server_port/;

proxy_request_buffering

   语法:proxy_request_buffering on | off;

   默认值:proxy_request_buffering on;

   应用位置:http, server, location

启用或禁用客户端请求体的缓冲。

proxy_send_timeout

   语法:proxy_send_timeout time;

   默认值:proxy_send_timeout 60s;

   应用位置:http, server, location

设置向代理服务器发送请求的超时。超时只设置在两个连续的写操作之间,而不是整个请求的传输。如果代理服务器在此期间没有接收到任何信息,则连接将关闭。

proxy_set_body

    语法:proxy_set_body value;

    默认值:无

    应用位置:http, server, location

允许重新定义传递给代理服务器的请求体。值可以包含文本、变量及其组合。

proxy_set_header

    语法:proxy_set_header field value;

    默认值:proxy_set_header Host $proxy_host;

                  proxy_set_header Connection close;

    应用位置:http, server, location

允许重新定义或附加字段到传递给代理服务器的请求标头。该值可以包含文本、变量及其组合。当且仅当当前级别上没有定义proxy_set_header指令时,这些指令才能从上一级别继承。

proxy_socket_keepalive

    语法:proxy_socket_keepalive on | off;

    默认值:proxy_socket_keepalive off;

    应用位置:http, server, location

配置到代理服务器的传出连接的“TCP保持活动”行为。默认情况下,操作系统的设置对套接字有效。如果指令被设置为“on”,那么SO_KEEPALIVE套接字选项将为套接字打开。

proxy_ssl_certificate

    语法:proxy_ssl_certificate file;

    默认值:无

    应用位置:http, server, location

指定具有PEM格式的证书的文件,该证书用于对代理的HTTPS服务器进行身份验证。

proxy_ssl_certificate_key

   语法:proxy_ssl_certificate_key file;

   默认值:无

   应用位置:http, server, location

指定具有PEM格式的密钥的文件,用于对代理的HTTPS服务器进行身份验证。 更多

proxy_ssl_ciphers

   语法:proxy_ssl_ciphers ciphers;

   默认值:无

   应用位置:http, server, location

指定对已代理HTTPS服务器的请求启用的密码。密码是按照OpenSSL库理解的格式指定的。(也就是加密算法)

proxy_ssl_crl

   语法:proxy_ssl_crl file;

   默认值:无

   应用位置:http, server, location

   作用:指定一个文件,该文件具有已撤销证书(CRL),格式为PEM,用于验证已代理HTTPS服务器的证书。

proxy_ssl_name

   语法:proxy_ssl_name name;

   默认值:proxy_ssl_name $proxy_host;

   应用位置:http, server, location

允许覆盖用于验证代理HTTPS服务器证书的服务器名称,并在与代理HTTPS服务器建立连接时通过SNI传递。

默认情况下,使用proxy_pass URL的主机部分。

proxy_ssl_password_file

    语法:proxy_ssl_password_file file;

    默认值:无

    应用位置:http, server, location

指定一个文件,其中每个密码子在单独的行上指定。在加载密钥时依次尝试密码。

proxy_ssl_protocols

    语法:proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];

    默认值:proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    应用位置:http, server, location

    作用:为请求代理的HTTPS服务器启用指定的协议。

proxy_ssl_server_name

    语法:proxy_ssl_server_name on | off;

    默认值:proxy_ssl_server_name off;

    应用位置:http, server, location

    作用:在与代理HTTPS服务器建立连接时,启用或禁用通过TLS服务器名称指示扩展(SNI, RFC 6066)传递服务器名称。

proxy_ssl_session_reuse

    语法:proxy_ssl_session_reuse on | off;

    默认值:proxy_ssl_session_reuse on;

    应用位置:http, server, location

确定在使用代理服务器时是否可以重用SSL会话。 如果日志中出现“SSL3_GET_FINISHED:摘要检查失败”错误,请尝试禁用会话重用。

proxy_ssl_trusted_certificate

    语法:proxy_ssl_trusted_certificate file;

    默认值:无

    应用位置:http, server, location

    作用:以PEM格式指定具有受信任CA证书的文件,该文件用于验证经过代理的HTTPS服务器的证书。

proxy_ssl_verify

    语法:proxy_ssl_verify on | off;

    默认值:proxy_ssl_verify off;

    应用位置:http, server, location

    作用:启用或禁用是否验证代理HTTPS服务器证书。

proxy_ssl_verify_depth

    语法:proxy_ssl_verify_depth number;

    默认值:proxy_ssl_verify_depth 1;

    应用位置:http, server, location

    作用:在已代理的HTTPS服务器证书链中设置验证深度。

proxy_store

    语法:proxy_store on | off | string;

    默认值:proxy_store off;

    应用位置:http, server, location

允许将文件保存到磁盘。(无法根据规则自动清除缓存) on参数使用与指令别名或root对应的路径保存文件。 off参数禁用文件保存。 此外,可以使用带变量的字符串显式设置文件名:

proxy_store /data/www$original_uri;

    案例:

location /images/ {
    root               /data/www;
    error_page         404 = /fetch$uri;
}

location /fetch/ {
    internal;

    proxy_pass         http://backend/;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    alias              /data/www/;
}


location /images/ {
    root               /data/www;
    error_page         404 = @fetch;
}

location @fetch {
    internal;

    proxy_pass         http://backend;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    root               /data/www;
}

proxy_store_access

    语法:proxy_store_access users:permissions ...;

    默认值:proxy_store_access user:rw;

    应用位置:http, server, location

为新创建的文件和目录设置访问权限,例如:

proxy_store_access user:rw group:rw all:r;

proxy_temp_file_write_size

    语法:proxy_temp_file_write_size size;

    默认值:proxy_temp_file_write_size 8k|16k;

    应用位置:http, server, location

当启用从代理服务器到临时文件的响应缓冲时,限制一次写入临时文件的数据大小。 默认情况下,size由proxy_buffer_size和proxy_buffers指令设置的两个缓冲区限制。 临时文件的最大大小由proxy_max_temp_file_size指令设置。

proxy_temp_path

    语法:proxy_temp_path path [level1 [level2 [level3]]];

    默认值:proxy_temp_path proxy_temp;

    应用位置:http, server, location

定义用于存储临时文件的目录,其中包含从代理服务器接收的数据。 在指定目录下最多可以使用三级子目录层次结构。 for proxy_store