nginx代理、缓存、upstream

代理服务器:客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

正向代理与反向代理的区别:正向代理的代理对象是客户端,反向代理的代理对象是服务端

架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

ngx_http_proxy_module模块配置

(1) proxy_pass URL;

context:location, if in location, limit_except

proxy_pass后面的路径不带uri时,其会将location的uri传递给后端的主机;下面的示例会将/uri/传递给backend服务器;

location  /uri/ {

proxy_pass http://hostname;

}

eg:http://www.xu.com/bbs/-->http://192.168.1.10/bbs/

若  proxy_pass http://hostname/

则路径映射为:   http://192.168.1.10/">http://www.xu.com/bbs/-->http://192.168.1.10/

访问结果:

proxy_pass后面的路径是一个uri时,其会将location的uri替换为后端主机自己的uri;

location  /uri/ {

proxy_pass http://hostname/new_uri/;

}

访问结果为后端主机的主页:

如果location定义其uri时使用的正则表达式模式匹配,则proxy_pass后的路径不能够使用uri;

location  ~*  \.(jpg|gif|jpeg)$  {

proxy_pass  http://HOSTNAME;

}  :此处的http://HOSTNAME后面不可以;不能有任何uri,哪怕只有/也

当在hostname后添加“/”时报错:

nginx代理动静分离搭建环境:

代理服务器配置:

两台服务其分别安装httpd和php并提供测试页面:

访问192.168.1.111/index.html.和index.php和效果

upstream

ngx_http_upstream_module模块配置  :nginx反代负载均衡器

用于将多个服务器定义成服务器组,而由proxy_pass, fastcgi_pass等指令进行引用;

(1) upstream name { ... }

定义一个后端服务器组,name为组名称;仅能用于http上下文 ;

(2) server address [parameters];

在upstream中定义一个服务器及其相关参数;仅能用于upstream上下文;

address定义:IP[:porrt]

HOSTNAME[:port]

unix:/path/to/some_socket_file

常用参数:

weight=number:定义服务器权重,默认为1;

max_fails=number:最大失败连接尝试次数,失败连接超时时长由fail_timeout参数指定;

fail_timeout=number:等待目标服务器发送响应的时长;

backup:备用服务器,所有主服务器均故障时才启用此主机;sorry_server

down:手动标记其不再处理任何用户请求;灰度发布模式

eg:官方文档配置示例:

upstream backend {

server backend1.example.com       weight=5;

server backend2.example.com:8080;

server unix:/tmp/backend3;

server backup1.example.com:8080   backup;

server backup2.example.com:8080   backup;

}

server {

location / {

proxy_pass http://backend;

}

}

在http上下文配置upstream 201/202集群服务器

访问效果:

缓存相关的选项(缓存要先定义,后调用):定义level目录最多有3级

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size]

定义缓存;可用上下文为http;

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

proxy_cache zone | off; 调用缓存;可用上下文 为http, server和location;

proxy_cache_key string;定义缓存键;

proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_valid [code ...] time;对不同响应码的响应设定其可缓存时长;

eg: proxy_cache_valid 200 302 10m;

proxy_cache_valid 404      1m;

location {

proxy_cache pcache;

proxy_cache_key $scheme$proxy_host$request_uri;

roxy_cache_valid 200 302 10m;

proxy_cache_valid 404      1m;

proxy_pass http://192.168.1.202;

index  index.html index.htm;

}

设置在何种情况下使用缓存响应:

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

跟连接相关的选项

proxy_connect_timeout time;定义与后端服务器建立连接的超时时长;默认为60s,不建议超出75s;

proxy_send_timeout time;把请求发送给后端服务器的超时时长;默认为60s;

proxy_read_timeout time;等待后端服务器发送响应报文的超时时长;

原文地址:http://blog.51cto.com/12580678/2135275

时间: 2024-10-18 07:38:11

nginx代理、缓存、upstream的相关文章

Nginx代理缓存功能

Nginx代理缓存功能      Nginx缓存主要是用于减轻后端服务器的负载,提高网站并发量,提升用户体验度. 注意:Nginx反向代理的缓存功能是由ngx_http_proxy_module提供,在使用缓存功能时务必要nginx支持该模块.可能有些选项的不支持Nginx的版本,具体看官方文档: http://nginx.org/en/docs/http/ngx_http_proxy_module.html 后端服务器可能无法承受负载为了更好的提升用户体验环境介绍 服务器IP 服务器角色 19

21.Nginx代理缓存

1.环境准备 操作系统 应用服务 外网地址 内网地址 CentOS7.6 LB01 10.0.0.5 172.16.1.5 CentOS7.6 Web01 10.0.0.7 172.16.1.7 2.web01操作 2.1建立相关目录 [[email protected] ~]# mkdir -p /soft/code{1..3} 2.2建立相关html文件 [[email protected] ~]# for i in {1..3};do echo Code1-Url$i > /soft/co

Nginx代理缓存加速服务器

Nginx缓存概述 提供与Squid类似的缓存,把URL以及相关信息当成key,用MD5编码哈希后,把数据文件保存在硬盘上,并且只能为指定的URL或者状态码设置过期时间,并不支持类似 squid的purge命令来手动清除指定缓存页面,但是可以通过第三方的ngx_cache_purge来清除指定的URL缓存Nginx的缓存加速功能是由proxy_cache(用于反向代理和静态缓存)和fastcgi_cache(PHP动态缓存)两个功能模块完成 1.proxy_cache原理 2.Nginx缓存特点

网站集群架构实战(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

Nginx代理Tomcat实例安装

一. JDK安装 下载jdk和tomcat(一般tomcat版本要和jdk对应,及tomcat7对应jdk1.7) mkdir /usr/java tar xf jdk1.7.0_75.tar.gz -C /usr/java/ 然后在/etc/profile中添加如下内容: export JAVA_HOME=/usr/java/jdk1.7.0_75 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH

Nginx构建反向代理缓存服务器

防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端:  反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提

nginx反向代理缓存服务器的构建

Nginx反向代理缓存服务器构建 一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理:与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.

Nginx - 代理、缓存

Nginx 标签 : nginx 代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供