利用Nginx反向代理怎么获取真实IP

  介绍

本篇文章给大家分享的是有关利用Nginx反向代理怎么获取真实IP、小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>一、前言

  前文Nginx解决WebApi跨域二次请求以及Vue单页面问题当中虽然解决了跨域问题带来的二次请求,但也产生了一个新的问题,就是如果需要获取用户IP的时候,获取的IP地址总是本机地址。

<强>二,原因

  由于Nginx反向代理后,在应用中取得的IP都是反向代理服务器的IP,取得的域名也是反向代理配置的Url的域名。

<强>三,解决方案

  解决该问题,需要在Nginx反向代理配置中添加一些配置信息,目的将客户端的真实IP和域名传递到应用程序中,同时,也要修改获取IP地址的方法。

  但是需要注意的是,通过Nginx反向代理后,如果访问IP通过了几层代理,可能取得的IP地址是这种格式:clientIP, proxy1 proxy2。

  如果需要将IP地址插入到数据库的话,需要做防止注入。因此要对上述的IP地址的格式进行截取。

<强> 3.1 Nginx配置如下

?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17日

  18

  19日

  20

  21日

  22日

  23日

  24

<代码>服务器{

, <代码>, <代码> listen 9461;#监听端口号

, <代码>, <代码> server_name localhost 192.168.88.22;#访问地址

, <代码>, <代码>位置/{

<代码>,,, <代码>根项目路径;#例如:E:/发布/xxx/;

<代码>,,, <代码>指数index . html;

<代码>,,,

<代码>,,, <代码> #此处用于处理Vue,角,使反应用H5的历史时重写的问题

<代码>,,, <代码>如果!- e request_filename美元){

<代码>,,,, <代码>重写^(. *)/索引。html最后;

<代码>,,,, <代码>打破;

<代码>,,, <代码>}

, <代码>, <代码>}

, <代码>,

, <代码>, <代码> #代理服务端接口

, <代码>, <代码>位置/api{

<代码>,,, <代码> proxy_pass http://localhost: 9460/api; #代理接口地址

<代码>,,, <代码> #主机配置以及域名传递

<代码>,,, <代码> proxy_set_header主机主机美元;

<代码>,,, <代码> proxy_set_header X-Real-IP remote_addr美元;

<代码>,,, <代码> proxy_set_header远程主机remote_addr美元;

<代码>,,, <代码> proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元;

, <代码>, <代码>}

<代码>, <代码>}

<强> c# 3.2代码获取真实IP方法

?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17日

  18

  19日

  20

  21日

  22日

  23日

  24

  25

  26日

  27日

  28日

  29日

  30

  31日

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49

  50

  51

  52

  53

  54

  55

  56

  57

  58

  59

  60

  61年

  62年

  63年

  64年

  65年

  66年

  67年

  68年

  69年

  70年

  71年

  72年

  73年

利用Nginx反向代理怎么获取真实IP