一、正向代理

1. 指令说明

(1) resolver

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

  语法:resolver address ... [valid = time ]
    address DNS 服务器的ip地址, 不指定的话默认53

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

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

resolver_timeout

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

  语法: resolver_timeout  time;

proxy_pass

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

  语法:proxy_pass URL

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

2. 正向代理配置示例

server {

    resolver 114.114.114.114;       #指定DNS服务器IP地址
listen 80;
location / { proxy_pass http://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header HOST $host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
} server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 443;
location / {
proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
}

二、反向代理

1. 指令说明

基本指令:

(1) proxy_pass

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

  语法:proxy_pass 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;

(4) proxy_pass_request_body

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

  语法:proxy_pass_request_body on | off

  可以用于 http  server  localtion。

(5) proxy_pass_request_header

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

(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.0、1.1、2.0,默认是1.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_headers_hash_max_size

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

  语法:proxy_headers_hash_max_size size;

    默认大小512

(17) proxy_headers_hash_bucket_size

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

  语法:proxy_headers_hash_max_size 64;

(18) proxy_next_upstream

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

  语法:proxy_next_upstream status..

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

(19) proxy_ssl_session_reuse

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

  语法:proxy_ssl_session_reuse on | off;

    默认on

Proxy Buffer 指令

(20) proxy_buffering

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

  语法:proxy_buffering on | off

(21) proxy_buffers

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

  语法:proxy_buffers number size;

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

    proxy_buffers 8 4KB|8KB;

(22) proxy_buffer_size

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

(23) proxy_busy_buffers_size

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

  语法:proxy_busy_buffers_size size;

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

(24) proxy_temp_path

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

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

    path 磁盘上临时存放文件的路径

    levelN 缓存文件存放在设置的路径的第几级hash目录中

(25) proxy_max_temp_file_size

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

  语法:proxy_max_temp_file_size size;

    默认是1024M;

(26) proxy_temp_file_write_size

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

  语法:proxy_temp_file_write_size size;

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

Proxy Cache指令

(27) proxy_cache

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

  语法:proxy_cache zone | off;

    zone 设置用于存放缓存索引的内存区域的名称

    off 关闭proxy_cache功能,默认设置

(28) proxy_cache_bypass

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

  语法: proxy_cache_bypass string ...;

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

    举例:proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment $http_pragma $http_authorization;

(29) proxy_cache_key

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

(30) proxy_cache_lock_timeout

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

(31) proxy_cache_in_uses

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

(32) 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块中。

(33) proxy_cache_use_stale

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

  语法:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | off ...;

    默认为off。

(34) 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分钟.

(35) proxy_no_cache

  配置在什么情况下不使用cache功能。

  语法:proxy_no_cache string ...;

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

(36) proxy_store

  配置是否在本地磁盘缓存来自被代理服务器的响应数据。

  语法:proxy_store on | off | string;

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

    string 自定义缓存文件存放路径.使用该配置时,默认开启Proxy Store。

(37) 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;

2. 反向代理配置示例

upstream test {
server 192.168.10.20;
} server {
listen 80;
server_name 192.168.10.20;
index index.html index.htm;
location / {
proxy_pass http://test;
}
}

Nginx的代理配置(六)的更多相关文章

  1. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

  2. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  3. nginx 正向代理配置

    需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...

  4. nginx 反向代理配置(一)

    文章参考:https://blog.csdn.net/physicsdandan/article/details/45667357       什么是代理?       代理在普通生活中的意义就是本来 ...

  5. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  6. nginx常用代理配置

    因为业务系统需求,需要对web服务作nginx代理,在不断的尝试过程中,简单总结了一下常见的nginx代理配置. 1. 最简反向代理配置 在http节点下,使用upstream配置服务地址,使用ser ...

  7. Nginx反向代理配置可跨域

    由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...

  8. Nginx反向代理配置配置实例

    为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...

  9. Linux 下的 Nginx 反向代理配置.

    最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...

随机推荐

  1. CF1010D Mars rover

    CF1010D Mars rover 洛谷评测传送门 题目描述 Natasha travels around Mars in the Mars rover. But suddenly it broke ...

  2. Jenkins安装第一个插件和通过离线安装包进行安装

    1.打开左侧Manage Jenkins 选择Manage Plugins菜单 2.搜索Folders插件,该插件用于创建一个目录 3.点击安装进入插件安装状态,Jenkins会自动下载相关联的插件 ...

  3. Python连载34-信息队列

    一.生产者消费者模型 1.一个模型.可以用来搭建消息队列:queue是一个用来存放变量的数据结构,特点是:先进先出 import threading import time import queue ...

  4. [线段树]Luogu P3372 线段树 1【模板】

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #d ...

  5. vue的双向绑定原理浅析与简单实现

    很久之前看过vue的一些原理,对其中的双向绑定原理也有一定程度上的了解,只是最近才在项目上使用vue,这才决定好好了解下vue的实现原理,因此这里对vue的双向绑定原理进行浅析,并做一个简单的实现. ...

  6. 离线缓存 Visual Studio 2019 (VS2019)的方法

    1. 下面是以管理员身份运行命令行: https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-en ...

  7. JSTL+EL表达式+JSP自定义框架案例

    不会框架不要紧,我带你自定义框架 前言:这标题说的有点大了,当一回标题党,之前在学JSP的时候提到了JSTL和EL表达式,由于一直钟情于Servlet,迟迟没有更新别的,这回算是跳出来了.这回放个大招 ...

  8. 一款常用的截图工具(能够截gif动图)

    这款工具用来截程序的演示GIF图片,灰常方便. 直接上Github地址: https://github.com/NickeManarin/ScreenToGif

  9. Winform 美化

    首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件. 将主窗体FormBorderStyle更改为None,这样就得到了 ...

  10. Java生鲜电商平台-供应链模块的设计与架构

    Java生鲜电商平台-供应链模块的设计与架构 说明:Java开源生鲜电商平台中供应链模块属于卖家的行为,也就是卖家如何管理他们自己的供应商,包括结算方式,压款方式,结算周期等等,超出了我这个B2B平台 ...