Nginx - 如何访问源地址

nginx反向代理获取客户端的真实IP

  • 1. nginx获取客户端的ip的简介
  • 2. 解析客户端ip的目的
  • 3. nginx中的变量介绍
  • 4. 获取客户端ip的方法
      • 4.1 realip模块搭建
      • 4.2 编辑配置文件
      • 4.3 配置域名解析
      • 4.4 测试

1. nginx获取客户端的ip的简介

我们访问互联网的服务时,在服务端拿到的客户端IP将是反向代理IP,
而不是真实客户端IP,因此需要想办法来获取到真实客户端IP

访问流程:
client(192.168.43.100) -> ADSL(192.168.43.11) ->cdn(10.0.0.1)
->SLB(11.0.0.1反向代理4层) -> server(nginx)12.0.0.1

注:
相连的两个ip是相互信任的

2. 解析客户端ip的目的

在一些特殊场景下,往往需要获取用户的ip信息,但是nginx的反向代理实现跨域的
同时也彻底改变了服务器的请求来源,隔离了用户和服务器的连接, 为了解决这个问题,对于客户ip进行解析

3. nginx中的变量介绍

  • 1. remote_addr

如果用了某个代理,那么浏览器会先访问这个代理,然后再由这个代理转发到网站 。这样这台代理机器的IP就是remote_addr

  • 2. X-Forwarded-For(简称XFF)

X-Forwarded-For 是一个 HTTP 扩展头部,它最开始是由 Squid 这个缓存代理软件引入用来表示 HTTP 请求端真实
IP。

  • 3. X-Real-IP

一个自定义头部字段,通常被 HTTP 代理用来表示与它产生 TCP 连接的设备 IP
(注意:如果未经严格处理,ip可以被伪造)

4. 获取客户端ip的方法

4.1 realip模块搭建

采用nginx的realip模块来实现
Nginx - 如何访问源地址_第1张图片
Nginx - 如何访问源地址_第2张图片
Nginx - 如何访问源地址_第3张图片
Nginx - 如何访问源地址_第4张图片
Nginx - 如何访问源地址_第5张图片

4.2 编辑配置文件

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

Nginx - 如何访问源地址_第6张图片
Nginx - 如何访问源地址_第7张图片

4.3 配置域名解析

  • vim /etc/hosts
    Nginx - 如何访问源地址_第8张图片

4.4 测试

在这里插入图片描述

你可能感兴趣的:(Nginx - 如何访问源地址)