Nginx反代配置详解,场景实践篇

作者: 金沙澳门官网网址  发布:2019-11-08

Nginx-场景实行篇

一、ngx_http_proxy_module模块

生龙活虎、Nginx作为静态财富Web服务

ngx_http_proxy_module模块可根据顾客央浼的uri传递至后端服务器,达成行反革命向代理

1、动态财富和静态能源

客商端央求的页面要是是静态网页,那么服务器会平素把静态网页的内容响应给顾客端。假使顾客端央求的是动态网页,服务器需求先把动态网页换成静态网页,然后再把转变后的静态网页响应给客商端

静态财富的几体系型

  • 浏览器渲染:HTML、CSS、JAVASC冠道IPT
  • 图片:JPEG、GIF、PNG ...
  • 视频:FLV、MPEG ...
  • 文件:TXT、等随便下载文件

命令:

2、CDN(Content Delivery Network)内容分发互联网

其基本思路是尽只怕避开互联英特网有异常的大希望影响多少传输速度和稳固性的瓶颈和环节,使内容传输的越来越快、更平稳。通过在网络随地放置节点服务器所构成的在现存的网络幼功之上的朝气蓬勃层智能设想互连网,CDN系统能够实时地依据网络流量和各节点的连天、负载情状以致到客户的间距和响合时间等综合音讯将客商的伸手重新导向离客商近来的劳动节点上。其指标是使客户可就地获得所需内容,解决Internet互连网拥堵的光景,进步客商访谈网址的响应速度。

1.proxy_pass

3、配置语法

  1. sendfile(文件读取卡塔 尔(英语:State of Qatar)
    • 安插语法:sendfile on|off;
    • 默认:无
    • Context:http,server,location,if in location
  2. tcp_nopush(sendfile开启的景况下,升高网络包的传输效能卡塔尔国
    • 布局语法:tcp_nopush on|off;
    • 默认:无
    • Context:http,server,location
  3. tcp_nodelay(keepalive连接下,提升网络包的传导实时性卡塔尔国
    • 布署语法:tcp_nodely on|off;
    • 默认:无
    • Context:http,server,location
  4. gzip(压缩)
    • 安插语法:gzip on|off;
    • 默认:无
    • Context:http,server,location,if in location
  5. gizp_comp_level(压缩比)
    • 配备语法:gzip_comp_level level;
    • 默认:无;
    • Context:http,server,location
  6. gzip_http_version(gzip的http的版本)
    • 计划语法:gzip_http_version 1.0|1.1;
    • 默认:无
    • Context:http,server,location
  7. gzip_static(预读gzip功能)
    • 布署语法:gzip_static on|off|always;
    • 默认:gzip_static off;
    • Context:http,server,location

    设置多个代理服务器的地点,左券,和一个可选的U揽胜I的义务应该映射。作为二个琢磨,“HTTP”或“https”能够内定。地址能够被钦赐为多个域名或IP地址,和二个可选的端口

4、浏览器缓存

HTTP合同定义的缓存机制(如:Expires;Cache-control等卡塔尔国

  • 浏览器无缓存:
    • 浏览器伏乞→无缓存→诉求WEB服务器→央浼相应,协商→显示
  • 客商端有缓存
    • 浏览器央求→有缓存→校验过期→呈现
  • 校验过期机制
校验方式 对应头信息
校验是否过期 Expires、Cache-Control(max-age)
协议中的Etag头信息校验 Etag
Last-Modified有信息校验 Last-Modified

首先次呼吁:
金沙澳门官网网址 1

第一回倡议:
金沙澳门官网网址 2

  • expires(response的headers添加Cache-Control、Expires)
    • 布置语法:expires [modified] time; expires epoch |max |off;
    • 默认:expires off;
    • Context:http,server,location,if in location

语法:proxy_pass URL;

5、跨站访谈

Nginx怎么样开垦跨站访谈? Access-Controller-Allow-Origin

  • add_header

    • 布署语法:add_header name value [always];
    • 默认:无
    • Context:http,server,location,if in location

      name可以为 Access-Controller-Allow-Origin 和 Access-Controller-Allow-Method

可用的上下文:location, if in location, limit_except

6、防盗链

基于http_refer防盗链配置模块

  • 安顿语法:valid_referers none|blocked|server_names|string...;
  • 默认:无
  • Context:server,location
valid_referers none blocked IP
if($invalid_referer) {
    return 403;
}

提醒:还不错curl来测量试验配置好的防盗链(curl -e "http:www.baidu.com" -I IP卡塔 尔(阿拉伯语:قطر‎
***

注意proxy_pass前面包车型地铁不二法门不带uri时,其会将location的uri传递给后端主机;proxy_pass后边的门路是贰个uri时,其会将location的uri替换为proxy_pass的uri;倘使location定义其uri时行使了正则表明式的形式,则proxy_pass之后必须不可能使用uri; 客商央浼时传递的uri将直接附加代理到的劳务的事后;

二、Nginx作为代理服务

  • 正向代理
    • 对象是客商端(举个例子说想拜望外网,把代理服务器设到代理地址,客商端能够访问任何网址卡塔尔国
  • 反向代理
    • 目的是服务端(并无需关切访谈的是哪生机勃勃台服务器,反向代理就位于服务端。反向代理会帮大家管理央求卡塔 尔(阿拉伯语:قطر‎
  • proxy_pass
    • 布置语法:proxy_pass URL;
    • 默认:无
    • Context:location,if in location,limit_except

别的代理的有的语法补充

  • proxy_buffering(缓冲区)
    • 语法配置:proxy_buffering on | off;
    • 默认:无;
    • Context:http,server,location
    • 扩展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
  • proxy_redirect(跳转重定向卡塔 尔(阿拉伯语:قطر‎
    • 布局语法:proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement;
    • 默认:无
    • Context:http,server,location
  • proxy_set_header(头信息)
    • 配置语法:proxy_set_header file value;
    • 默认:proxy_set_header Host $proxy_host;proxy_set_header Connection close;
    • Context:http,server,location
    • 扩展:proxy_hide_header、proxy_set_body
  • proxy_connect_timeout(超时)

    • 安顿语法:proxy_connect_timeout time;
    • 默认:无
    • Context:http,server,location
    • 扩展:proxy_read_timeout、proxy_send_timeout

      布局文件中的例子:

proxy_pass http://127.0.0.1:8080;
proxy_redirect default;

proxy_set_header HOST $http_host;
proxy_set_header X-Real-IP $remote_addr;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

2.proxy_set_header

三、Nginx作为负载均衡服务

负载均衡:创建在存活互联网布局如上,它提供了风姿罗曼蒂克种廉价有效透明的措施扩大互连网设施和服务器的带宽、增添吞吐量、做实网络数据处理能力、提升网络的八面见光和可用性。
负载均衡,阿拉伯语名字为Load Balance,其意思正是分派到多个操作单元上拓宽试行,举例Web服务器、FTP服务器、公司根本应用服务器和别的首要职务服务器等,进而协同完结职业职务。

  • upstream
    • 布局语法: upstream name {...}
    • 默认:无
    • Context:http

轻巧易行安排例子

upstream ronaldo {
        server ip:port [param];
        server ip:port [param];
        server ip:port [param];
}
server {
    location / {
        proxy_pass http://ronaldo;
    }
}

设定发以后端主机的哀求报文的乞求首部的值

param参数解释:

param 意义
down 当前的server暂时不参与负载均衡
weight=num 权重,num越大,轮询到的概率越大
backup 预留的备份服务器
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后,服务暂停的时间(默认是10s)
max_conns 限制最大的接收的连接数

语法:proxy_set_header FIELD VALUE;

调治算法:

算法 意义
轮询 按时间顺序逐一分配到不同的后端服务器
加权轮询 weight值越大,分配到的访问几率越高
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP就固定访问同一个后端服务器
least_conn 最少连接数,哪个服务器连接数少就分发
url_hash 按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
hash关键字值 hash自定义的key
  • ip_hash:
    • 只需求在upstream中到场** ip_hash; **即可
    • 瑕疵:要是走代理,那么remote_addr就不是顾客真正的ip
  • url_hash(1.7.2版本之后可用卡塔 尔(英语:State of Qatar):

    • 配备语法:hash key [consistent];
    • 默认:无
    • Context:upstream

      key可以是$request_uri,根据url进行hash

可用的上下文:http, server, location

四、Nginx作为缓存服务

示例:

1、缓存的品类

  • 服务端缓存。例:memcache、reids
  • 代理缓存。例:Nginx缓存服务端的数据
  • 客商端缓存。
客户端->Nginx: 1、请求数据a
Nginx->服务端: 2、请求数据a
服务端->Nginx: 3、返回数据a
Nginx->客户端: 4、返回数据a
客户端->Nginx: 1、请求数据a
Nginx->客户端: 2、返回数据a

proxy_set_header X-Real-IP  $remote_addr;

2、常用缓存配置

  • proxy_cache_path
    • 配置语法proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size] [use_temp_path]...
    • 默认:无
    • Context:http
  • proxy_cache
    • 布署语法:proxy_cache zone | off;
    • 默认:proxy_cache off;
    • Context:http,server,location
  • proxy_cache_valid(缓存过期周期卡塔尔
    • 配置语法:proxy_cache_valid [code...] time
    • 默认:无
    • Context:http、server、location
  • proxy_cache_key(缓存的维度卡塔 尔(英语:State of Qatar)
    • 布局语法:proxy_cache_key string;
    • 默认:proxy_cache_key $scheme$proxy_host$request_uri;
    • Context:http、server、location

多如牛毛配置:

proxy_cache_path cache_path levels=1:2 keys_zone=key_name:10m max_size=10g inactive=60m use_temp_path=off;

server {
    loaction / {
        proxy_pass http://ronaldo;
        proxy_cache key_name;
        proxy_cache_valid 200 304 12h;
        proxy_cache_valid any 10m;
        proxy_cache_key $host$uri$is_args$args;
        add_header Nginx-Cache "$upstream_cache_status";

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    }
}

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

2、清除钦命缓存

  • rm -rf 缓存目录内容
  • 其三方扩张模块:ngx_cache_purge

3、proxy_cache_path

3、如何让某些页面不缓存

  • proxy_no_cache
    • 布局语法:proxy_no_cache string ...;
    • 默认:无
    • Context:http,server,location

简单易行示例

if ($request_uri ~ ^/(url_3|login|register|password/reset)) {
    set $cookie_nocache 1;
}

location / {
    proxy_no_cache $cookie_nocache;
}

概念可用以proxy作用的缓存

4、大文件分片诉求

  • slice
    • 语法配置:slice size;
    • 默认:slice 0;
    • Context:http、server,location

优势:各类子央求收到的多少都会产生叁个独立的文书,多个伸手断了,其余央浼不受影响。
缺点:当文件十分大依旧slice十分的小的时候,可能会引致文件陈诉符耗尽等待景况。

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

示例:

proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;

4、proxy_cache

指明要调用的缓存,或关闭缓存机制

语法:proxy_cache ZONE | off;

可用上下文:http, server, location

5、proxy_cache_key

缓存中用于“键”的剧情;

语法:proxy_cache_key STRING;

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

可用上下文:http, server, location

6、proxy_cache_valid

概念对一定响应码的响应内容的缓存时间长度;

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

可用上下文:http, server, location

示例:

    定义在http{...}当中

    proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;

    定义在急需调用缓存作用的布署段,举例server{...}

    proxy_cache pxycache;

proxy_cache_key $request_uri;

proxy_cache_valid 200 302 301 1h;

proxy_cache_valid any 1m;

7、proxy_cache_use_stale

    不鲜明缓存的响应得以用代理服务器的通讯进程中现身谬误时,使用该指令的参数相配的proxy_next_upstream指令的参数

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

可用上下文:http, server, location

8、proxy_cache_methods

    借使客商端央求方法在此个命令中列出,那么响应将被缓存。“获取”和“头”的艺术总是增加到列表中,就算提出显然钦赐它们。又见proxy_no_cache指令。

语法:proxy_cache_methods GET | HEAD | POST ...;

可用上下文:http, server, location

9、proxy_hide_header

    遮掩所定义的首部,顾客不可以看到

语法:proxy_hide_header FIELD;

可用上下文:http, server, location

10、proxy_connect_timeout

    定义了用来构建与代理服务器连接超时,这些超时平淡无奇不可能当先75秒。

语法:proxy_connect_timeout time;

可用上下文:http, server, location

11、proxy_buffers

    集数和用来从代理服务器读取响应缓冲区的尺寸,为三个单少年老成的连天。默许境况下,缓冲区大大小小约等于一个内部存储器页,4K或8K

语法:proxy_buffers NUMBER SIZE;

可用上下文:http, server, location 

二、ngx_http_headers_module模块

    ngx_http_headers_module模块允许增多“过期”和“缓存调整头字段,和任性的世界,二个响应头。向由代理服务器响应给客商端的响应报文加多自定义首部,或涂改内定首部的值;

命令:

1、add_header

    增添自定义首部;

语法:add_header name value [always];

可用上下文:http, server, location, if in location

示例:

    add_header X-Via  $server_addr;

    add_header X-Accel $server_name;

金沙澳门官网网址 ,2、expires

    用于定义Expire或Cache-Control首部的值;

语法:expires [modified] time;

可用上下文:http, server, location, if in location

三、ngx_http_upstream_module模块 

    ngx_http_upstream_module模块用于定义服务器能够经过proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass参照组,和memcached_pass指令。

命令:

1、upstream

    定义大器晚成组服务器。服务器能够在差别的端口上监听。此外,服务器监听TCP和Unix域套接字能够勾兑。

语法:upstream name { ... }

可用上下文:http

示例:

upstream httpdsrvs {

    server ...

    server...

    ...

}

2、server

    在upstream上下文中server成员,以致有关的参数;Context:upstream

语法:server address [parameters];

可用上下文:upstream

address表示格式:

    unix:/PATH/TO/SOME_SOCK_FILE

    IP[:PORT]

    HOSTNAME[:PORT]

parameters:

   (1) weight=number

        权重,默认为1;

    (2)max_fails=number

        失败尝试最大次数;超出此处钦定的次数时,server将被标识为不可用;

    (3)fail_timeout=time

        设置将服务器标识为不可用状态的过期时长;

    (4)max_conns

        当前的服务器的最大并发连接数;

    (5)backup

        将服务器标识为“备用”,即怀有服务器均不可用时此服务器才启用;

    (6)down

        标记为“不可用”;

3、least_conn;

    起码连接调节算法,当server具备不相同的权重时其为wlc,适用于长连接服务

4、ip_hash;

    源地址hash调治措施;

5、hash

    基于钦赐的key的hash表来落到实处对诉求的调治,此处的key能够一向文本、变量或二者的三结合;

    功用:将呼吁分类,同黄金年代类央浼将发往同八个upstream server;

语法:hash key [consistent];

示例:

    hash $request_uri consistent;

    hash $remote_addr;

6、keepalive

    为各类worker进度保留的空闲的长连接数量;连接参数设置KeepAlive闲置的最菲尼克斯接数中游服务器保存在种种专门的学问历程缓存。当以此数字被超越时,这两天利用的连年被关闭。

四、ngx_stream_core_module模块

    模拟反代基于tcp或udp的劳务连接,即工作于传输层的反代或调解器;

命令:

1、stream

本文由金沙澳门官网发布于金沙澳门官网网址,转载请注明出处:Nginx反代配置详解,场景实践篇

关键词: 金沙澳门官网

上一篇:centos7安装pycharm(小白篇)
下一篇:没有了