轻量级web服务器nginx学习(8)———nginx的反向代理服务之掘取客户ip

1.什么是代理服务器?什么是反向代理?

见先前博客

2.反向代理需求

需求一节约ip资源。假设我公司开发了三个软件,三个软件部署在三个tomcat服务器上,但是只买了一个公网ip,这时该怎么办,可以运用我们之前所学的http服务的虚拟机知识来解决,一个ip可以对应多个域名,所以这三个软件都绑定的这一个ip,现在用户要通过公网ip来访问我这三个软件其中的一个,这时候,nginx起到反向代理的作用,将这个唯一的公网放在nginx服务器上,它根据域名的不同,来把请求转发到对应的应用服务器tomcat上,tomcat把返回结果给nginx然后再回馈给用户。

需求二掘取客户ip。前后端分离之后,采用nginx作为静态服务器,并通过反向代理的方式来实现接口跨域的方式,在降低开发成本的的同时也带来了诸多问题,例如客户端真实ip的获取。在一些特殊场景下,比如风控和支付流程,往往需要获取用户的ip信息,但是nginx的反向代理实现跨域的同时,也彻底改变了服务器的请求来源,隔离了用户和服务器的连接这并不是我们想要的,因此对于客户端ip的解析是必要的

需求三保护真实服务器。在很多如果有恶意用户如果知道我们的真实服务器ip,那他可能会使用一些,破坏手段对我们的RS进行攻击而造成麻烦。这时我们采用反向代理策略,代理服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上;因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

3.nginx做反向代理配置

1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址; 2.$remote_user :用来记录客户端用户名称; 3.$time_local : 用来记录访问时间与时区;4.$request : 用来记录请求的url与http协议;
  5.$status : 用来记录请求状态;成功是200, 6.$body_bytes_s ent article录发送给客户端文件主体内容大小;7.$http_referer :用来记录从那个页面链接访问过来的; 8.$http_user_agent :记录客户端浏览器的相关信息;

server1(真实服务器RS)配置:

###就写在配置文件本来的sever下面就行了
    server {
        listen       80;
        server_name  localhost;
        set_real_ip_from 172.25.254.12;##代理服务器ip
        real_ip_header X-Forwarded-For;##获取客户端ip
	real_ip_recursive on;##接收客户端ip

在这里插入图片描述
server2配置(代理服务器):

     upstream westos {
                server 172.25.0.101:80;  #上游真实服务器
        }
server {
        listen 80;
        server_name www.westos.org;

        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://westos; ##调用westos upstream模块
        }
}

在这里插入图片描述
在这里插入图片描述
测试:
在物理机修改本地域名解析
物理机访问 hh.westos.org,
然后在server1真实服务器上查看access.log,可以看到请求来自172.25.254.3(物理机)
在这里插入图片描述
在这里插入图片描述
真实RS获取客户端ip:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值