Nginx作为反向代理

#前言 今天遇到配置反向代理的问题,作文以记之。 #反向代理简介 反向代理(reverse proxy)是一个WEB服务器,它终结了客户端连接,并生成一个新的连接。新的连接代表客户端向上游服务器生成连接。上游服务器(upstream server)被定义为一个Nginx产生连接“打通”了客户端请求的服务器。Nginx在处理这个工程中,为了更好地响应客户端请求,该请求可以根据它的URI、客户机参数或者一些其他的逻辑进行拆分。通过代理服务器,请求的原始URL中的任何部分都能够以这种方式进行转换。

代理到上游服务器配置中,最重要的是proxy_pass指令。该指令有一个参数URL,请求将会被转换,带有URI部分的proxy_pass指令会使用该URI替代request_uri部分。例如:

location /uri {
	proxy_pass http://localhost:8080/newuri;
}
## uri在请求传递到上游服务器时将会被替代为/newuri

**注意:**1、如果location定义了一个正则表达式,name在URI部分没有转换发生。2、如果在location内有rewrite改变了URI,那么Nginx使用这个URI处理请求,不再发生转换。

## URI /local将被直接传递到上游服务器,而不会转换为/foreign。
location ~^/local {
	proxy_pass http://localhost:8080/foreign;
}

## URI传递到上游服务器将会是/index.php?page=<match>,这个match会是来自括号中捕获的参数,而不是/index
location / {
	rewrite /(.*)$ /index.php?page=$1 break;
	proxy_pass http://location:8080/index;
}

代理模块

指令说明
proxy_connect_timeoutNginx从接受请求到连接至上游服务器的最长等待时间
proxy_cookie_domain替代从上游服务器来的Set-Cookie头的域domain;domain被替换为一个字符串、一个正则表达式或者引用的变量
proxy_cookie_path替代从上游服务器来的Set-Cookie头中的path;path被替换成一个字符串、一个正则表达式或者引用的变量
proxy_pass指定请求被传递到的上游服务器,格式为URL
proxy_pass_header覆盖掉proxy_hide_header指令中设置的头信息

upstream模块

与proxy模块紧密搭配的是upstream模块。upstream指令将会启用一个新的配置区段,在该区段定义了一组上游服务器。这些服务器可以设置不同的权重(权重越高的服务器将会被Nginx传递越多的连接)。

指令说明
ip_hash通过IP地址的哈希值确保客户端均匀地连接所有服务器,键值基于C类地址
keepalive每一个worker进程缓存的到上游服务器的连接数。在使用Http连接时,proxy_http_version应该设置为1.1,且将proxy_set_header设置为Connection ""
least_conn激活负载均衡算法,将请求发送到活跃连接数最少的那台服务器
server为upstream定义了一个服务器地址。有很多属性,例如:weight:权重,down:表示不再接受任何请求

示例如下:

	##我们明确指定了Nginx要同上游的运行在本机8080端口的Apache保持32个连接。
	upstream apache {
		server 127.0.0.7:8080;
		keepalive 32;
	}
	
	location / {
	proxy_http_version	1.1;
	proxy_set_header	Connection "";
	proxy_pass http://apache;
	}

如果是一组服务器,则设定如下:

	upstream memcaches {
		least_conn; ## 负载均衡算法
		server 10.86.42.234:10000;
		server 10.86.42.234:10001;
		keepalive 64;
		
	}
	
	location / {
	proxy_http_version	1.1;
	proxy_set_header	Connection "";
	proxy_pass http://memcaches;
	}

反向代理高级话题

  • 安全隔离
  • 提供对隔离引用程序组件的可扩展
  • 反向代理服务器的性能调优

(有时间再搞)

转载于:https://my.oschina.net/mrku/blog/1844737

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值