文档章节

Nginx系列之反向代理相关模块

是江山
 是江山
发布于 2017/08/18 17:10
字数 1274
阅读 4
收藏 0
点赞 0
评论 0

##一、ngx_http_proxy_module模块 主要提供反向代理及缓存功能;

###1、proxy_pass指令

该指令用来设置被代理服务器的地址,可以是主机名称,IP地址加端口号等形式。 配置格式:

Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except

注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;

示例:

location /bbs/ {
  proxy_pass http://192.168.1.141;
}

# 访问http://www.codegreen.cn/bbs/此时后端节点收到的请求就是http://192.168.1.141/bbs/

注意:proxy_pass后面是一个uri时,其会将location中的uri替换为后端主机的uri;

示例:

location /bbs/ {
  proxy_pass http://192.168.1.141/www/;
}

注意:如果location定义其uri时使用了正则表达式匹配机制,则proxy_pass后的路径必须不能使用uri;

示例:

location ~* \.php$ {
  proxy_pass http://192.168.1.141;
}

注意:http://192.168.1.141后面一定不能加斜线"/" ###2、proxy_set_header指令

设定向后端主机发送请求报文的首部及其值; 配置格式:

Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
         proxy_set_header Connection close;
Context: http, server, location

示例:

# 设置向后端服务器发送的客户端IP地址,用于让后端服务器获取用户真实的IP地址
proxy_set_header X-Real-IP $remote_add;
proxy_set_header X-Forward-For $remote_add;
# 设置向后端服务器发送请求报文中的主机名
proxy_set_header Host $host;

###3、proxy_cache_path指令

定义缓存,只能用于http上下文;

注意:当后端存在多个虚拟主机时,必须为每个虚拟主机单独使用一个缓存。

配置格式:

proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]
  • path:定义缓存数据存放的根目录,改路径应该是预先存在于磁盘上的。
  • evels:设置缓存目录的层级结构。
  • keys_zone=name:size:name设定缓存区域的名称自定义,size表示使用多大的内存空间缓存;
  • inactive=time:设置缓存超时时长;
  • max_size=size:设置数据在磁盘中可使用的最大空间,超过此空间将使用LRU最近最少使用算法删除缓存;

示例:

proxy_cache_path  /var/cache/nginx/proxy levels=2:1 keys_zone=pcache:10m max_size=1g;

###4、proxy_cache指令

调用缓存,默认为off;

注意:当后端存在多个虚拟主机时必须为每个虚拟主机单独使用一个缓存。

配置格式:

Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location

示例:

proxy_cache pcache;

###5、proxy_cache_key指令

定义缓存键; 配置格式:

Syntax: proxy_cache_key string;
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location

###6、proxy_cache_valid指令

为不同的响应码设置不同的缓存时长; 配置格式:

Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location

示例:

proxy_cache_valid 200 301 302 10m;
proxy_cache_valid 404 1m;

###7、proxy_read_timeout指令

等待后端服务器发送响应报文的超时时长,默认为60秒。当后端服务器特别繁忙,请求处理不过来超出此处设置的时长时nginx反向代理就会返回给用户502的错误; 配置格式:

Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location

###8、proxy_connect_timeout指令

与后端服务器建立连接的超时时长;默认为60秒;最长为70秒;

配置格式:

Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location

###9、proxy_send_timeout指令

向后端服务器发送请求报文的超时时长;默认60秒。

配置格式:

Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location

##二、ngx_http_headers_module模块 用于在响应给客户端报文中添加首部;

###1、add_header指令

向响应报文添加自定义首部,并赋值。

配置格式:

Syntax: add_header name value [always];
Default: —
Context: http, server, location, if in location

示例:

# 向响应客户端报文首部添加服务器地址;
add_header X-Via $server_addr;
# 如果代理服务器配置的缓存,向客户端展示缓存命中与否
add_header X-Cache $upstream_cache_status;

###2、expires指令

用于添加Expires及Cache-Control首部或修改首部的值; 配置格式:

Syntax: expires [modified] time;
        expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location

##三、ngx_http_upstream_module模块 将多个后端主机定义为服务器组,而后可由proxy_pass,fastcgi_pass,memcached_pass等调用;

###1、upstream指令

定义后端服务器组,引入新的上下文,只能用在http上下文; 配置格式:

Syntax: upstream name { ... }
Default: —
Context: http
name:名称,直接字符串;

###2、server指令

定义服务器的地址和相关的参数;只能用于upstream上下文;

配置格式:

Syntax: server address [parameters];
Default: —
Context: upstream

地址的格式:

IP[:port]
HOSTNAME[:port]
unix://PATH/TO/SOME_SOCK_FILE

参数:

  • weight=number:服务器主机权重;
  • max_fails=number:最大失败尝试次数;
  • fail_timeout=time:设置服务器被识别为不可用的超时时长;
  • backup:标记为备用主机,只有当所有server不可用时才使用;
  • down:手动标记其不在处理任何用户请求,可实现代码灰度发布。

###3、ip_hash指令

设置源地址哈希调度算法;

Syntax: ip_hash;
Default: —
Context: upstream
```
###4、least-conn指令

最少连接调度算法;
配置格式:
```
Syntax: least_conn;
Default: —
Context: upstream
This directive appeared in versions 1.3.1 and 1.2.2.
```
###5、keepalive指令

指明多少个连接使用keepalive;通常后端有多少台主机就给多少;

配置格式:
```
Syntax: keepalive connections;
Default: —
Context: upstream
This directive appeared in version 1.1.4.
```
示例:
```
keepalive 4;
```

本文转载自:http://www.codegreen.cn/archives/0627223.html

共有 人打赏支持
是江山
粉丝 4
博文 44
码字总数 24060
作品 0
苏州
运维
Nginx系列-11.配置Nginx反向代理和负载均衡

Nginx系列-11.配置Nginx反向代理和负载均衡 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系...

ngle
06/10
0
0
Web服务之Nginx浅析

一、Nginx 简介: nginx [engine x]是Igor Sysoev编写的一个高性能的HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 在大多数情况下都是用来做静态web服务器和反向代理服务器,在作...

hoo_5
2014/05/18
0
0
Nginx笔记系列(1)——Nignx的安装部署

Nginx百科 服务器(软件)你能一口气说出几个?从当年“蹒跚学步”学java时开始用 Tomcat,到“PHP是最好的语言”那帮家伙的LAMP中A——Apache,从sun当年不温不火弄出的glassfish,到微软的...

HappyBKs
2016/03/07
323
0
Nginx反向代理并替换内容模块ngx_http_substitutions_filter_modu

====== 以前写过Nginx反向代理通过with-httpsubmodule和substitutions4nginx模块替换正文内容和URL和在军哥lnmp的环境下配置反向代理服务器的方法教程 本教程基于军哥lnmp环境,其他Nginx类同...

adbug
2016/02/16
707
0
Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块

反向代理的缓存清理 一、proxy_cache配置 (1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-8-proxycache.md (2)被代理域...

tinywan1227
2017/11/20
0
0
分布式学习(3) ---- 初识Nginx

Nginx两大作用:1.轻量web容器 2.反向代理服务器。 在Java领域中,Nginx更多的被用作在前端提供负载均衡的反向代理服务。 所以本文仅简要介绍下反向代理概念和负载均衡的实现。 . 反向代理 ...

KKys
2017/02/06
0
0
Nginx编译安装和配置详解

一、Nginx简介 Nginx官网:http://nginx.org/ 1、简介 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯...

斜视天花板
2014/04/24
0
0
大型网站技术架构系列2:负载均衡

本文主要讲解nginx的负载均衡。 负载均衡基于nginx的反向代理功能。 ~~ 1)让nginx支持jsp动态文件 操作方法:---修改nginx.conf,在server里添加 正在验证--->已经验证。 通过抓包得到的结论...

强子哥哥
2014/02/12
0
0
《实战Nginx:取代 Apache的高性能Web服务器》pdf下载

目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装N...

绿悠悠
2010/06/17
16.5K
36
Nginx 配置从零开始

作为一个 nginx 的初学者记录一下从零起步的点滴。 基本概念 Nginx 最常的用途是提供反向代理服务,那么什么反向代理呢?正向代理相信很多大陆同胞都在这片神奇的土地上用过了,原理大致如下...

Yomut
2016/09/30
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

回想过往,分析当下,着眼未来

好久没有真正的在纸质笔记本上写过东西了,感觉都快不会写字了,笔画都不知道怎么写了。接下来就说说咱们的正事。 2018年7月22日,我做了一个决定,那就是去参加安全培训(可能是我职业生涯中...

yeahlife
42分钟前
4
0
关于工作中的人际交往

关于工作中的人际交往 Intro 写了篇发泄情绪的博客,但不会发布出来。 大概就是,要么忍,要么滚。 以及一些不那么符合社会主义核心价值观,不满于大资本家与小资本家剥削的废话。

uniqptr
47分钟前
0
0
springMVC的流程

1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(...

JavaSon712
今天
0
0
大数据教程(3.2):Linux系统软件安装之自动化脚本

博主前面文章有介绍过软件的安装,可以帮助IT人员顺利的完成功能软件安装;但是,对于我们运维人员或者需要管理软件安装的项目经理来说,有些应用一次行需要搭建很多台相同的软件环境(如tom...

em_aaron
今天
0
1
Spring Boot 2.0.3 JDBC整合Oracle 12

整合步骤 1. Oracle驱动引入 Oracle驱动一般不能通过maven仓库直接下载得到,需自行下载并导入到项目的lib目录下,建议通过如下pom依赖引入下载的Oracle驱动 <!-- Oracle 驱动 -->...

OSC_fly
今天
0
0
java 8 并行流 - 1

下面创建一个并行流,与顺序流 //顺序流Stream.iterate(0L, i -> i + 1) .limit(Integer.MAX_VALUE) .reduce(0L, Long::sum);//并行流Stream.iterate(0L, i -> i......

Canaan_
今天
0
0
数据结构与算法5

二分法采用向下取整的方法 使用有序数组的好处是查找的速度比无序数组快的多,不好的方面是因为要将所有靠后的数据移开,所以速度较慢,有序数组和无序数组的删除操作都很慢。 有序数组在查找...

沉迷于编程的小菜菜
昨天
1
1
SpringBoot | 第十一章:Redis的集成和简单使用

前言 上几节讲了利用Mybatis-Plus这个第三方的ORM框架进行数据库访问,在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的需求。...

oKong
昨天
5
0
对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
昨天
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部