Nginx实现反向代理

前言

什么是代理?实际上在我们Nginx这种高并发服务器中,它就是一种传输数据的渠道。因此这就涉及到了代理与被代理的对象。在现如今的高并发网络环境中,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器繁忙而导致数据请求失败,此时Nginx的反向代理将会显得尤为重要。

一、Nginx代理分类

Nginx的代理分为正向代理反向代理

(1)正向代理

举个例子:客户端(Client)想访问某个后端服务器,但无法正常访问,这时就需要找到一个可以访问该后端服务器的代理服务器,然后将我们的请求发送给代理服务器,代理服务器再去访问后端服务器,最后将请求的结果返回给客户端。实际上这就是属于正向代理,代理的过程隐藏了真实的请求客户端,即后端服务器不知道真实的客户端是谁,因为客户端请求的服务都被代理服务器代替请求了。代理的对象是客户端(Client),而且请求的客户端(Client)和代理服务器(Proxy)处于同一个LAN内。如下图所示:

在这里插入图片描述
(2)反向代理

举个例子:当我们访问某购物网站时,尤其是在某些特殊节日期间,单个服务器会处于一个供不应求的状态。这时需要我们对服务器进行分布式部署,即通过部署多台服务器来解决高访问量人数限制的问题。实际上大多数的购物平台都是通过Nginx进行的反向代理而实现的分布式部署。与正向代理相反,反向代理的过程隐藏了提供服务的真实服务器,即客户端不知道是那一台服务器提供的服务,客户端请求的服务都被代理服务器处理。反向代理的是响应方(即server服务端),而且代理服务器(Proxy)和提供真实服务的服务端(server)处于同一个LAN内。如下图所示:

在这里插入图片描述

二、Nginx反向代理实例

测试环境:准备两台nginx服务器;
代理模块:ngx_http_proxy_module。

(1)启动一台nginx服务器(作为应用服务器:server)

  • 编辑nginx配置文件

    vim /usr/local/nginx/conf/nginx.conf
    

    在这里插入图片描述

  • 编辑html文件内容

    vim /usr/local/nginx/html/proxy/index.html
    

    在这里插入图片描述

  • 重载生效

    /usr/local/nginx/sbin/nginx -t          --检查nginx配置语法是否正确
    /usr/local/nginx/sbin/nginx -s reload   --重载生效
    
  • 服务器页面测试

    测试成功,说明后端服务器可以正常提供服务,这时只需要再配置一台反向代理服务器,用户即可通过反向代理服务器访问后端服务器。

    在这里插入图片描述

(2)启动另一台nginx服务器(作为代理服务器:proxy_server)

  • 编辑配置文件

    vim /usr/local/nginx/conf/nginx.conf
    

    在这里插入图片描述

  • 重载生效

    /usr/local/nginx/sbin/nginx -t          --检查nginx配置语法是否正确
    /usr/local/nginx/sbin/nginx -s reload   --重载生效
    
  • 浏览器访问代理服务器

    在这里插入图片描述

    成功通过代理服务器访问到了后端服务器,并且后端服务器给我响应了请求的内容。

nginx proxy 具体配置详解

proxy_pass :真实后端服务器的地址,可以是ip也可以是域名和url地址
proxy_redirect :如果真实服务器使用的是的真实IP:非默认端口。则改成IP:默认端口。
proxy_set_header:重新定义或者添加发往后端服务器的请求头
proxy_set_header X-Real-IP $remote_addr;  --只记录连接服务器的上一个ip地址信息。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  --通过这个选项可以记录真正客户端机器的ip地址
proxy_connect_timeout::后端服务器连接的超时时间发起三次握手等候响应超时时间
proxy_send_timeout:后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout :nginx接收upstream(上游/真实) server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭。像长连接

总结

  • 正向代理:
    • 正向代理中代理的对象是客户端;
    • 代理的过程隐藏了真实的请求客户端;
    • 代理服务器(Proxy)和请求的客户端(Client)处于同一个LAN内。
  • 反向代理:
    • 反向代理中代理的对象是服务端;
    • 代理的过程隐藏了提供服务的真实服务器;
    • 代理服务器(Proxy)和请求的客户端(Client)处于同一个LAN内。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值