Nginx之代理模块 ngx_http_proxy_module

正向代理

正向代理是指位于客户机(A)和站点服务器(B)之间的代理服务器(C),为了从站点服务器(B)获取资源,客户机(A)向代理服务器(C)发送请求并指定站点服务器(B),然后代理服务器(C)向站点服务器(B)转交请求并将获取的资源返回给客户机(A)。
Nginx之代理模块 ngx_http_proxy_module_第1张图片

上述这样的代理模式称为正向代理,正向代理最大的特点

  • 客户端非常明确要访问的服务器地址;
  • 服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;
  • 正向代理模式屏蔽或者隐藏了真实客户端信息。

反向代理

客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色。

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

Nginx之代理模块 ngx_http_proxy_module_第2张图片
代理区别: 区别在于代理的对象不一样

  • 正向代理代理的对象是客户端
  • 反向代理代理的对象是服务端(常用)

Nginx代理服务支持协议

Nginx作为代理服务,可支持的代理协议非常的多,具体如下图:

如果将Nginx作为反向代理服务,常常会用到如下几种代理协议,如下图所示:

反向代理模式与Nginx代理模块:

反向代理模式 Nginx配置模块
http、websocket、https ngx_http_proxy_module
fastcgi ngx_http_fastcgi_module
uwsgi ngx_http_uwsgi_module
grpc ngx_http_v2_module

ngx_http_proxy_module 模块

Nginx 基于http协议的代理功能是通过 ngx_http_proxy_module 模块来实现的。默认在安装 Nginx 时已经安装了ngx_http_proxy_module模块,因此可直接使用 ngx_http_proxy_module 模块。

相关参数

  1. proxy_pass
proxy_pass URL; 
将请求转发到另一台服务器,在实际的反向代理工作中,会通过 location 功能匹配指定的 URI,然后把接收到的符合匹配 URI 的请求通过 proxy_pass 抛给定义好的upstream节点池(后端服务节点)。
    可用位置:location, if in location, limit_except 
    
   proxy_pass转发的路径问题
    第一种:proxy_pass后面的url加/,表示绝对根路径,不会代理location后的路径;
    	假设用URL:http://localhost/web/test.html 进行访问。
		location /web/ {
   
   		 	proxy_pass http://192.168.1.2:8080/;
		}
		# 代理到URL:http://192.168.1.2:8080/test.html

    第二种:相对于第一种,最后少一个 / ,则会把location后的路径代理进去	
		location /web/ {
   
    		proxy_

你可能感兴趣的:(nginx,nginx)