Nginx Proxy(代理)

代理原理

代理可分为正向代理和反向代理

反向代理产生的背景:
在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

反向代理服务的实现:
需要有一个负载均衡设备(即反向代理服务器)来分发用户的请求,将用户请求分发到空闲的服务器上。服务器返回自己的服务到负载均衡。负载均衡设备将服务器的服务返回用户。

正向代理:
正向代理的过程隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求。我们常说的代理也就是正向代理,正向代理代理的是请求方,也就是客户端。

在这里插入图片描述

反向代理:
反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端;我们请求www.baidu.com时这www.baidu.com就是反向代理服务器,真实提供服务的服务器有很多台,反向代理服务器会把我们的请求分转发到真实提供服务的各台服务器。Nginx就是性
能非常好的反向代理服务器,用来做负载均衡。

在这里插入图片描述

反向代理中,proxy和server同属一个LAN
反向代理中代理的对象是服务端,proxy和server同属一个LAN,对client透明。
正向代理中代理的对象是客户端,proxy和client同属一个LAN,对server透明。

在这里插入图片描述

Nginx Proxy 配置

代理模块

ngx_http_proxy_module   #代理模块

代理配置信息

#代理
Syntax:   proxy_pass URL;   #代理的后端服务器URL 
Default:   —
Context:   location, if in location, limit_except 

#头信息
Syntax:   proxy_set_header field value;
Default:   proxy_set_header Host $proxy_host;   #设置真实客户端地址
           proxy_set_header Connection close;
Context:   http, server, location

#超时
Syntax:   proxy_connect_timeout time;
Default:   proxy_connect_timeout 60s;   #链接超时  
Context:   http, server, location 

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

Syntax:   proxy_send_timeout time;   #nginx进程向fastcgi进程发送request的整个过程的超时时间
Default:   proxy_send_timeout 60s;
Context:   http, server, location

Nginx反向代理配置

配置nginx_server的配置

nginx_server的ip:192.168.202.128 
已经编译安装好,检查nginx是否启动是否可以访问
cat  /etc/nginx/conf.d/a.conf
server  {
       listen  80;
       server_name  localhost;
       location  /  { 
              root  /home/www/xiaobai;
              index xiaobai.html; 
       }
}   #nginx_server的配置信息

nginx -t   #检查nginx配置文件
nginx -s reload   #加载nginx配置文件

cat /home/www/xiaobai/xiaobai.html
你好!小白!

配置nginx_proxy的配置

nginx_proxy的ip:192.168.202.129
配置nginx的yum源直接yum安装
启动编辑nginx的配置文件(编辑之前,删除/注释掉之前的配置): vim /etc/nginx/conf.d/default.conf
      server  {  
          listen   80;
          server_name  localhost;
          
          location  /  { 
          proxy_pass http://192.168.202.128:80; 
          proxy_set_header Host $http_host; 
          proxy_set_header X-Real-IP $remote_addr; 
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         proxy_connect_timeout 30; 
         proxy_send_timeout 60;
         proxy_read_timeout 60;
         }
}

nginx -t   #检查nginx配置文件
nginx -s reload   #加载nginx配置文件

proxy_pass :真实服务器的地址,可以是ip也可以是域名和url地址
proxy_set_header:重新定义或者添加发往后端服务器的请求头
proxy_set_header X-Real-IP :启用客户端真实地址(否则日志中显示的是代理在访问网站)
proxy_set_header X-Forwarded-For:记录代理地址
proxy_connect_timeout:后端服务器连接的超时时间发起三次握手等候响应超时时间
proxy_send_timeout:后端服务器数据回传时间就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout :nginx接收upstream(上游/真实) server数据超时, 默认60s, 如果连续的60s内没有收 到1个字节, 连接关闭。像长连接

以上就做好了反向代理

文中内容适用于初学者 @小白

发布了17 篇原创文章 · 获赞 19 · 访问量 1108

猜你喜欢

转载自blog.csdn.net/little_baixb/article/details/104805403